Bon je vais vous décrire le réalisation de ma girouette avec retour télémétrique pour ma radio taranis plus de FrSky
l'idée est de la couplé au GPS pour obtenir des données twa vitesse d'ou le choix du recepteur X4R ou X4RSB pour disposer de l'entré analogique pour la girouette et l'entrée smart port pour le GPS 
configuration:
girouette
aimant anneau à polarisation radiale 
capteur sentron 2SA-10
pont diviseur pour coller à l'entrée analogique
ubec de 5V pour lisser la tension d'entrée sur le capteur
récepteur FrSky X4RSB
le circuit électronique donne une tension comprise entre 5 et 95% de la tension d'entrée soit entre 0.25V et 4.75V en fonction de l'angle de la girouette entre 0 et 180°
Et oui elle ne fait pas la différence entre tribord et bâbord
un pont diviseur pour abaisser cette tension pour avoir un Vmax de 3.3V (maximum accepté par l'entrée analogique des récepteurs FrSky)
un petit calcul dans un script lua pour transformer cette tension en angle puis affichage et le tour est joué
voici mon script lua pour  utiliser les données
affichage A1 accu de réception direct sur le récepteur ( non valable si présence d'un bec ou ubec)
affichage tension émetteur 
affichage du rssi (qualité de la liaison TX RX)
affichage du swr ( qualité de l'émission)
avec l'affichage du aws: angle entre le vent apparent et le bateau grâce à la girouette télémétrique fabriquée données récupérés en A2
et calcul du VMG  en fonction de la vitesse du GPS (par smart port et du aws en A2)
affichage graphique position manche voile du aws tension TX RX et RSSI
code
-- script for RC sailboat with a personnal wind indicatorentry in A2 and smart port GPS
-- Version 1.0
-- FROMENT A
-- for more information about personnal wind indicator antoinefroment@gmail.com
-- janvier2015
-- A installer dans SCRIPT\"nom du modele" sur la carte SD
-- le nom du modele ne doit pas contenir d'espace
local function vgauge(vx, vy, vw, vh, vfill, vmaxfill) 
--draw border 
lcd.drawRectangle(vx, vy ,vw, vh)
-- calculate height 
local vlen = vh * vfill / vmaxfill 
local vheight = vy + ( vh - vlen)
-- dont go negative 
if vlen < 2 then vlen = 2 end
--draw fill inside border 
lcd.drawFilledRectangle(vx + 1, vheight + 1, vw - 2,vlen - 2, 0)
end
local function run(event)
      -- affichage A1
      -- si A1 202
      -- si A2 203
  lcd.drawChannel(122, 5, 202, LEFT+XXLSIZE)
      -- calcul pourcentage A1 lipo2s
      -- formule pour lipo 2S   %=(T-7,1068)/0,0118
      -- formule pour lipo 3S   %=(T-10,6602)/0,0177
      -- formule pour lipo 4S   %=(T-14,2136)/0,0236
      -- formule pour lipo 5S   %=(T-17.767)/0,0295
  local percent1 = (getValue(202)-7.1068)/0.0118
  if percent1 < 0 then 
    percent1 = 0
  end
      -- affichage pourcentage sur la réprésentation graphique
  lcd.drawNumber(100, 50, percent1, MIDSIZE)
  lcd.drawText(lcd.getLastPos(), 53, "%", SMLSIZE)
      -- affichage graphique de pourcentage A1
  lcd.drawGauge(3, 49, 195, 14, percent1, 100)
      -- affichage valeur Tx
  lcd.drawChannel(3, 5, "tx-voltage", LEFT+MIDSIZE)
      -- calcul pourcentage Tx
  local settings = getGeneralSettings()
  local percent2 = (getValue("tx-voltage")-settings.battMin) * 100 / (settings.battMax-settings.battMin)
      -- affichage pourcentage sur la réprésentation graphique
  lcd.drawNumber(76, 6, percent2, MIDSIZE)
  lcd.drawText(lcd.getLastPos(), 7, "%", SMLSIZE)
      -- affichage graphique de pourcentage Tx
  lcd.drawGauge(30, 5, 72, 14, percent2, 100)
      -- mise en variable de la valeur rssi pour affichage
  local rssi = (getValue(200))
      -- affichage texte Rssi
  lcd.drawText(3, 26, "Rx", SMLSIZE)
      -- affichage valeur RSSI sur représentation graphique
  lcd.drawNumber(78, 27, rssi, SMLSIZE)
      -- affichage graphique du RSSI
  lcd.drawGauge(30, 26, 72, 8, getValue(200), 100)
local swr = (getValue(198))
      -- affichage texte swr
  lcd.drawText(3, 38, "SWR", SMLSIZE)
      -- affichage valeur swr sur représentation graphique
  lcd.drawChannel(30, 38, 198, SMLSIZE)
      -- affichage texte AWS
  lcd.drawText(32, 38, "AWS", SMLSIZE)
          --calcul AWS en fonction de A2
local aws = 54.545*(getValue(203))
if aws < 0 then 
aws = 0
end
      -- affichage valeur aws 
   lcd.drawNumber(60, 38, aws, SMLSIZE)
          -- affichage texte VMG
  lcd.drawText(62, 38, "VMG", SMLSIZE)
          --calcul VMG en fonction de la vitesse GPS 211 et A2 203
local vmg = (getValue(211))*(math.cos(math.deg(aws)))
      -- affichage valeur vmg 
   lcd.drawNumber(95, 38, vmg, SMLSIZE)
      -- affichage texte Voile
 -- lcd.drawText(2, 2, "Voile", SMLSIZE)
        -- affichage d'un curseur twa
  vgauge(200, 2, 5, 60, getValue(203), 100)
      -- affichage d'un curseur pour position du manche gaz
  lcd.drawRectangle(206, 2, 5, 60, ROUND)  
  vgauge(206, 2, 5, 59, getValue(77)+1024, 2048)
  vgauge(206, 2, 5, 59, getValue(77)+924, 2048)
end
return { run=run }
voici l'ensemble de mon code certaines valeurs de formule sont à revoir en fonction de votre capteur de girouette elles sont en orange.
Plus de détails plus tard quand j'aurais recu l'ensemble de mes commandes pour la réalisation
merci à O. Cohen pour la correction twa aws 
Bonjour auriez vous fini la conception de la girouette ? est il possible d'avoir des photos, schema de connection.....
RépondreSupprimermerci