jeudi 23 juin 2016

Programmation, suite

Gestion de la sécurité


Température

Deux seuils sont définis, le premier bride la lampe aux modes classiques 1 à 3, tandis que le second - réglé plus haut - la bride au mode de sécurité 1.

Niveau de batterie


Protection de l'accu

De la même maniere deux seuil sont définis pour surveiller la batterie. Un premier seuil bride la lampe au mode de sécurité 1 afin de privilégié l'autonomie sur le restant de batterie, tandis de que second, réglé à 3V par élément, interdit l'allumage pour protéger les accus.

Remarque : la lecture de la tension batterie m'a donné du fil à retordre, portant un simple analogRead() doit normalement retourner un entier compris entre 0 et 1023, proportionel à la tension mesurée (sur une échelle de 0 à la tension de référence, par défaut la tension d'alimentation du µC). Le fonctionnement était totalement ératique et après de nombreux essais j'ai découvert que pour une entrée analogique il fallait utiliser le numéro d'entrée analogique et pas le numéro d'entrée général. Pour être clair j'utilise la pin 10 pour mesurer la tension, celle-ci est repéré "7/A3" sur le pinout ATTinyCore et il faut exécuter un analogRead(A3) pour faire la mesure, un analogRead(7) lira l'entrée A7, qui pour moi était une sortie PWM pour le spot, d'où le fonctionnement foireux !

Information de l'utilisateur

Plusieurs seuils intermédiaires sont également définis, à chaque franchissement d'un seuil à la décharge la lampe émet plusieurs clignottement alternés sur les deux optiques suivant le niveau de décharge. Ces cligottements sont également émis au démarrage de la lampe pour informer sur l'état de charge initial, mais comme ils suivent les clignottements de mise sous tension c'est encore assez peu intuitif, je vais probablement modifier ceci.

EEPROM

Pour rappel, l'EEPROM est une mémoire non volatile qui va permettre de stocker les valeurs des intensité sur chaque mode. Celle-ci sont conservées à la mise hors tension du µC, c'est un point indispensable pour avoir des modes réglables en live. 
.La librairie dédiée a fonctionnée dès le premier essai, j'ai rédigé un cours programme qui écrit juste les valeurs dans l'EEPROM à l'aide d'une boucle for sur le nombre de modes, puis j'ai remplacé l'affectation "en dur" des valeurs de mode dans mon programme principal par une boucle de lecture dans l'EEPROM. 

Le mode "programmation" reste à écrire mais désormais toute "l'infrastructure" est prête.

Je vais probablement lancer une pré-série de circuit pour faire un vrai test en puissance nominale, pour l'instant mon montage sur breadboard ne permet pas le passage de l'intensité nominale et de plus j'ai quelques faux contacts. Je travaille sous EAGLE pour dessiner le PCB qui est quasiment prêt et devrait partir en fab prochainement.

Aucun commentaire:

Enregistrer un commentaire