Tension de sortie

Bonjour je voudrais savoir si la carte arduino pouvait donner en sortie une tension variable en fonction de différentes entrées ?
Merci :slight_smile:

Oui et non :grin:

En fait ça dépend beaucoup du type de carte Arduino utilisée, de la plage de valeurs que tu souhaites pour cette «tension variable», du besoin en termes de résolution, du nombre et du type de composants externes que tu peux ajouter, du type de composants que tu souhaites piloter avec cette tension, et j'en passe.

Bref, Il faut nous en dire plus.

Ok merci :slight_smile:
Enfaite je veux brancher:
-Un cardiofréquencemetre
-Un capteur de vitesse
-Un capteur de pédalage
-Un accélérateur a VAE

sur la carte arduino

et en sortie avoir le controleur du vélo a assistance électrique en lui donnant une tension variable entre 0 et 5 V :stuck_out_tongue:

Pour faire une tension variable avec une carte Arduino il y a deux principales manières :

  1. la PWM
    Je vais me faire un petit plaisir en disant que pour comprendre la PWM il suffit d'en connaître la traduction en français :grin: :grin: :grin:.
    P = Pulse W = width M = modulation
    En français cela donne Modulation par Largeur d'Impulsion (MLI).

Le principe : une impulsion est délivrée à intervalle fixe, c'est à dire que la période est constante.
La largeur de l'impulsion est variable entre 0% et 100% de la période.
Attention le signal est NUMERIQUE.
Pour obtenir un signal analogique il faut ajouter quelque chose qui remplisse la fonction mathématique intégrale. Un simple filtre résistance plus condensateur rempli ce rôle.

  1. La conversion Digitale /analogique.
    Les cartes arduino à base d'avr (Uno, Mega, Léonardo) ne disposent pas de cette fonction.
    La carte DUE en dispose mais elle n'est jamais sortie du stade beta.

Avec des cartes à base d'avr il faut utiliser des composants extérieurs:

  • soit des "DAC" --> Digital Analog Converteur --> en français Convertisseur Digital Analogique (CDA)
  • soit des registres à décalage associés à des réseaux R/2R : simples, peu coûteux mais avec du câblage a faire (pour un CDA 8 bits il faut 16 résistances).

Merci bien donc si je comprend avec ma carte arduino UNO je pourrais réaliser mon montage ? :slight_smile:

Oui mais avec des composants extérieurs.

Par défaut le bootloader fixe la fréquence de la PWM à 500 Hz. Cette fréquence oblige à utiliser des condensateurs de forte valeur.
Il est possible d'augmenter cette fréquence pour faciliter le filtrage et diminuer la valeur des condensateurs.
Cela se fait en modifiant les registres du Timer qui la commande.
Il existe 3 timers dans une carte UNO (atmega328p). Évite de toucher au timer 0 qui est utilisé par les librairies arduino.

--> lire la datasheet.

Ok merci je vais essayer de voir pour faire ça alors XD

Juste une dernière question?
-Comment pourrais-je alors programmer la carte pour qu'lle délivre une tension en fonction des infos d'entrées ?

Je ressort ma boule de cristal, elle sert tellement souvent que la poussière n'a pas le temps de se déposer.

On ne connaît fichtre rien de tes infos d'entrée ni ce que tu veux faire , comment veut-tu qu'on te réponde.

Je vais réécrire toujours le même conseil :
Prend une feuille de papier et décrit avec des phrases courtes ce que tu veux faire.
Des choses comme :
si la vitesse dépasse la consigne --> couper le moteur --> PLI à 0
si le rythme cardiaque dépasse la valeur de consigne --> mettre en route l'assistance :
dépassement de 10 % assistance à 25 --> PLI a 29
dépassement de 34 % assistance à 124 --> PLI à 153
etc etc
Bien évidement les chiffres sont complètement au pif.

Tu verra que ton programme se développe tout seul. Ensuite il ne restera plus qu'à coder.

Ok merci je vais essayer :grin:
Mais le problème c'est que je veux que la tension de sortie de l'arduino soit proportionnelle a la fréquence cardiaque et donc je ne peux pas établir un programme valeur par valeur donc je voudrais simplement savoir si il existe une fonction de proportionnalité ou quelque chose dans le genre ? $)

C'est à toi de déterminer la plage de fréquence cardiaque qui t'intéresse (par exemple 40-120 /min) et de calculer le PWM qui va bien avec une formule. Si c'est proportionnel c'est simple
pwm = a x pulse + b

Ah merci, il me suffit donc de créer une fonction linéaire de la forme
PWM = f(FC) = a*FC+b ? :slight_smile:

:cold_sweat:
Juste une dernière question, Il faut un module ou quelque chose du genre pour brancher des freins de vélos sur une carte arduino ?

Pas besoin si c'est un simple contact on / off sur le levier de frein.
Est ce que le frein doit être progressif ?

Non
merci je veux juste un contacte on/off :slight_smile: