Je souhaite restaurer une vielle radio en utilisant le montage objet de ce fil de discussion : https://forum.arduino.cc/t/polarite-de-mes-condensateurs-arduino-nano-et-rda5807m/851252/12
mais sans le jack 3.5 et avec un haut-parleur.
Le problème c'est que je dois contrôler les fréquences avec un potentiomètre.
Pour le volume c'est très simple surtout avec la fonction map mais pour les fréquences j'ai du mal ! Avant de venir vous voir j'ai fait beaucoup de recherches sur internet mais je n'ai rien trouver.
Aussi, si quelqu'un veut bien m'aider, je l'en remercie par avance.
J'ai vu qu'il existait des encodeurs rotatifs mais je ne comprends comment programmer pour changer les fréquences.
Merci.
Tu peux aussi utiliser map() pour les fréquences.
Il suffit de mapper la dynamique de codage de la tension en sortie du potentiomètre (0 - 1023) sur la bande de fréquence à couvrir.
2 problèmes possibles:
Le 1er pourrait éventuellement être de faire coïncider la position du potentiomètre, la fréquence reçue et la position d'une aiguille sur l'écran du poste.
le 2nd pourrait être un pas un peu grossier dû au fait que l'ADC ne code la position du potentiomètre que de 0 à 1023. Il faudra un bon filtrage sur cette valeur car sinon le poids faible va bouger en permanence ce qui serait équivalent à perdre un bit sur le codage de la valeur et 512 pas pour coder la fréquence pourrait être un peu limite.
Concernant l'usage d'un encodeur rotatif, les modèles bon marché ne donnent qu'une position relative donc ce n'est pas très adapté si tu dois coupler le bouton avec un indicateur en face avant du poste.
Un encodeur me paraît être une solution plus stable qu'un potentiomètre, à moins d'utiliser un modèle de bonne qualité et si possible multi-tours (cher).
Dans le principe, l'objet Encoder comporte une variable position :
une méthode read() pour lire la position
une méthode write() pour modifier la position
Lorsque l'on tourne d'un cran vers la droite, la position est incrémentée.
Lorsque l'on tourne d'un cran vers la gauche, la position est décrémentée.
L'association position / fréquence peut être faite à partir d'un règle simple :
De 87,6 MHz à 107,9 MHz il y a 204 pas (si l'on veut un pas de 0.1MHz), ou 408 si l'on veut un pas de 0.05MHz.
Il suffit de considérer que la position zéro correspond à 87,6 MHz et d'ajouter la position de l'encodeur :
position / 10 si l'on désire un pas de 0.1MHz
position / 20 si l'on désire un pas de 0.05MHz
Dans le premier cas la position évoluera donc de 0 à 203. Dans le second cas la position évoluera de 0 à 406.
Si la variable position de l'encodeur passe en dessous de ZÉRO, il suffit de la remettre à ZÉRO dans le code. Si elle passe au dessus de 203 ou 406, il suffit de la remettre à cette valeur.
Dernier détail : sauvegarder la position courante de l'encodeur en EEPROM permettra de la retrouver au démarrage.
Pas mal d'encodeurs possèdent un bouton central (encodeurs à 5 broches). Il suffit d'appuyer dessus pour mémoriser la position.
Un simple essai avec un potentiomètre permet de constater qu'il est très difficile de faire tourner le potentiomètre pour obtenir une variation de fréquence de 0.1MHz. C'est trop sensible.
J'ai utilisé un potentiomètre à piste plastique, avec une piste carbone ce sera pire.
Par contre avec un potentiomètre 10 tours c'est beaucoup plus facile.
C'est clair pour moi, surtout étant donné le prix ridicule.
Avec un potentiomètre on aura toujours le risque de se trouver dans une zone de la piste où la mesure de l'ADC sera instable.
Avec l'encodeur ce risque n'existe pas.
Un potentiomètre de mauvaise qualité permet aussi de faire l'affaire si on change le système de commande, on peut faire comme un joystick. Pour un pot de 10kΩ:
3 à 7kΩ -> la fréquence est fixe
0 à 3kΩ -> la fréquence diminue de 0,1MHz rapidement pour 0kΩ, lentement pour 3kΩ
7 à 10kΩ -> la fréquence augmente de 0,1MHz rapidement pour 0kΩ, lentement pour 3kΩ
Cela permet d'utiliser un composant simple. Évidemment l'idéal est de mettre un ressort de rappel en position centrale.
J'utilise ceci en général :
Un morceau de tube Ø intérieur 6mm collé sur l'axe de l'encodeur.
Un axe 6mm (récupéré sur un vieux potentiomètre) de la longueur voulue collé dans le tube.
De toute façon sans affichage de la fréquence cela n'a jamais été simple de trouver une station.
Fait appel à tes souvenirs des postes de quand tu étais jeune :
Grandes ondes : faciles presque pas de stations : Paris Inter, Radio luxembourg et Europe 1 et dans le Sud Ouest Radio Andore qui émettait moitié en français, moitié en espagnol, dans le Sud Est Radio Monte Carlo.
ça peut marcher oui
un encodeur rotatif va permettre d'affiner, un appui sur le bouton et on bascule vers la modification du son, un appui long on sauve en EEPROM... ça fait un tout en un 'numérique'
encore un truc de softeux (numérique) versus hardeux (analogique)
Il ne me restera plus qu'à trouver comment brancher ce vieux potentiomètre qui fait office de volume mais aussi de marche arrêt. Il y a deux connexions supplémentaires pour le cran d'arrêt-marche au début de la rotation.