Go Down

Topic: Arduino et les récepteurs RC, PWM (Read 5539 times) previous topic - next topic

tomlaves

salut a tous,

je viens de commander ma première véritable arduino et je souhaiter pouvoir la mettre sur un avion rc de compétition pour des vols avec des leds,

et pour les séquences préprogrammés ,je voulais les démarrer grâce au récepteur mais je ne connais pas le code pour que la Arduino lise le signal PWM .

j'ai trouvé plein de script sur le net mais il ne sont pas tous pareil ,j'ai réussi a trouvé pour envoyé (analogwrite) du PWM mais pas pour le recevoir (analogread)

et il vaut mieux passer par les voies Analog ou par les voies Digital ?

merci de bien vouloir m'aider.

B@tto

Deux options :
- travailler en analogique en lissant le PWM avec un circuit RC et en se servant d'analogRead().
- travailler en digital en utilisant la fonction pulseIn() ou les interruptions
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

quel est le mieux ?

et pouvez vous me donner des exemples ,explications ,s'il vous plait .

un exemple avec un interrupteur sur le transmetteur RC ,à 100% demarre un void ,et a 0% un autre void .

B@tto

Petite précision si c'est pas clair, quand je disais RC c'était la contraction de Resistance-Condensateur :



Code: [Select]


void setup() {

}

void loop(){

if(analogRead(A0)>=400) Fonction1();
else Fonction2();

}

Fonction1(){

}

Fonction2{

}
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

non je parle de RC c'est la contraction de Radio-commander

ce code est t-il quand même bon pour le Rc(radio-commande) ou c'est le RC(resistance-condensateur) ?

B@tto

Oui normalement après faut tester !
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

ok ,le test sera fait ,

normalement il n'y a aucun risque de griller le récepteur ou la Arduino ? bien sur dans le cas des tests de programmation et non de mauvaise manipulation

tomlaves

juste pour savoir et pouvoir reproduire avec d'autres valeurs :
Quote
if(analogRead(A0)>=400) Fonction1();


quesque veut dire 400 ?c'est la valeur pour 100% ?



mais comme on peut voir sur l'image, la valeur pour 100% est 255, est ce que ce n'est pas la même valeur dans l'analog write et dans l'analog read ?

et merci a vous de votre aide

Jean-François

analog >>  1023

digital >> 250


donc 400/1023  soit  39.1 %
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

B@tto

J'ai l'impression qu'il faut reprendre les bases : ce que je te propose c'est de lisser le PWM qui est une technique qui permet de générer une tension variable. Mais en réalité ce n'en ai pas vraiment une puisque ce sont des créneaux alternatifs. Le circuit RC permet ici "d'absorber" ces créneaux, pour stabiliser le signal, comme dans une alimentation par transformateur par exemple.

Donc à la sortie du RC l'arduino doit recevoir une tension variable suivant ce que sort ton récepteur donc suivant la commande de la télécommande. J'ai pris 400 pour le seuil mais c'était arbitraire (ni trop bas ni trop haut) mais c'est parce qu'il faudra adapter à tes choix. Après pour la partie en amont de l'arduino je ne suis pas maitre en la matière, c'est à toi de voir.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

donc tu a prit 400 au hasard ?

donc pour 100% je doit prendre 1023 ou 255 ? si je veux le prendre en analog et non digital

B@tto

analogRead(pin) renvoi un nombre compris entre 0 et 1023 correspond à la mesure de tension sur pin
analogWrite(pin,consigne) génére un signal PWM où consigne doit être compris en 0 et 255

Ici (si j'ai bien tout compris, tu veux exploiter un signal PWM en provenance du récepteur, donc aucun rapport avec analogWrite().

J'ai pris 400 au hasard oui, enfin pas tout à fait quand même non plus : c'est entre les deux extrêmes, ça évite les faux positifs ou les faux négatifs.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

non aucun rapport avec l'analogwrite() ,donc pour 100% je dois utiliser la valeur 1023 et pour 0% je dois utiliser la valeur 0

B@tto

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

tomlaves

ok ,je vais commencer a me mettre au code alors

Go Up