Étape 5: Firmware
Si vous avez besoin d’un programmeur PIC, considérer ma planche de programmeur JDM2 améliorée également signalé chez instructables (
Fonctionnement de base :
1. lorsque l’alimentation est appliquée le PIC commence.
2. retards PIC pendant 1 seconde pour permettre aux tensions de stabiliser.
3. PIC lit la rétroaction de tension d’alimentation et calcule le rapport cyclique optimal et valeurs de l’époque.
4. PIC enregistre la lecture ADC, rapport cyclique et valeurs de l’époque dans l’EEPROM. Cela permet à certains dysfonctionnements et diagnostiquer des défaillances catastrophiques. EEPROM adresse 0 est le pointeur d’écriture. Un journal de 4 octets est enregistré chaque fois que le SMPS est (re-) a commencé. Les 2 premiers octets sont ADC haute/basse, troisième octet est 8 bits de poids faible de valeur de duty cycle, quatrième octet est la valeur de la période. Un total de 50 étalonnages (200 octets) sont enregistrés avant que le pointeur d’écriture survole et recommence à l’adresse EEPROM 1. Le journal le plus récent sera situé au pointeur-4. Celles-ci peuvent être lues sur la puce à l’aide d’un programmateur PIC. Les octets supérieurs 55 sont laissées libres pour les améliorations futures (voir les améliorations).
5. PIC entre la boucle infinie - valeur de rétroaction haute tension est mesurée. Si elle est inférieure à la valeur souhaitée les PWM duty cycle registres sont chargés avec la valeur calculée - Remarque : les deux bits inférieurs sont importants et doivent être chargés dans CPP1CON 5:4, supérieurs 8 bits allez dans CRP1L. Si la rétroaction est supérieure à la valeur désirée, le PIC charge les duty cycle registres avec 0. Il s’agit d’un système de "passer d’impulsion". J’ai décidé de sauter d’impulsion pour deux raisons: 1) à ces fréquences élevées, il n’ya pas beaucoup de largeur de devoir jouer avec (dans notre exemple, beaucoup moins à des tensions plus élevées d’alimentation 0-107), et 2) modulation de fréquence est possible et donne beaucoup plus de place pour le réglage (35-255 dans notre exemple), mais seulement devoir est DOUBLE mise en mémoire tampon en matériel. Changer la fréquence pendant le fonctionne du PWM peut avoir des effets « étranges ».
En utilisant le firmware :
Plusieurs étapes d’étalonnage sont tenus d’utiliser le firmware. Ces valeurs doivent être compilées dans le firmware. Certaines étapes sont facultatives, mais il vous aidera à tirer le meilleur parti de votre alimentation.
const v_ref comme float = 5.1 ' flotteur
const supply_ratio comme float = 11.35 ' flotteur
const osc_freq comme float = 8 ' flotteur
const L_Ipeak comme float = 67 ' flotteur
const fb_value comme mot = 290 ' mot
Ces valeurs se trouvent en haut du code du firmware. Les valeurs trouvées et définissez comme suit.
v_ref
Il s’agit de la référence de tension de l’ADC. Ceci est nécessaire pour déterminer la tension réelle d’inclure dans les équations décrites à l’étape 1. Si le PIC est exécuté depuis un régulateur 5 volts de 7805 nous pouvons nous attendre environ 5 volts. À l’aide d’une multimètre mesure la tension entre la broche d’alimentation PIC (PIN1) et de la terre à la borne à vis. Ma valeur exacte était de 5,1 volts. Entrez cette valeur ici.
supply_ratio
Le diviseur de tension d’alimentation est composé d’un 100K et la résistance de 10K. Théoriquement la rétroaction doit être égale à la tension d’alimentation divisée par 11 (voir le tableau 5. Supply Voltage Feedback réseau calculs). Dans la pratique, les résistances ont des tolérances différentes et ne sont pas des valeurs exactes. Pour trouver le ratio exact de vos commentaires :
1. mesurer la tension entre les bornes à vis.
2. mesurer la tension de rétroaction entre broche 7 de la PIC et la masse à la borne à vis.
3. Divisez la fourniture V par FB V pour obtenir un rapport exact.
Vous pouvez également utiliser "tableau 6. Supply Voltage Feedback étalonnage".
osc_freq
Simplement la fréquence de l’oscillateur. J’ai utiliser l’oscillateur de 8Mhz 12F683 interne, donc j’ai entrer une valeur de 8.
L_Ipeak
Multipliez la bobine d’inductance euh par les ampères continus maximum pour obtenir cette valeur. Dans l’exemple, le 22r104C est une bobine de 100uH avec une cote de .67amps continu. 100 *. 67 = 67. Multipliant la valeur ici élimine un 32 bits floating point variable et calcul qui aurait dû être fait sur la photo. Cette valeur est calculée en « Tableau 1: bobine de calculs pour alimentation haute tension ».
fb_value
Il s’agit de la valeur entière que du PIC utilisera pour déterminer si la sortie haute tension est au-dessus ou en dessous du niveau souhaité. Le tableau 3 permet de déterminer le rapport entre la tension HV sortie et rétroaction lorsque la tondeuse linéaire est en position centrale. À l’aide de la valeur du centre donne la pièce de réglage de chaque côté. Entrez ensuite ce ratio et votre référence de tension exacte dans le "tableau 4. Haute tension Feedback ADC Set Value"pour déterminer le fb_value.
Après avoir trouvé ces valeurs entrer dans le code et la compilation. Graver l’hexagone à la photo et vous êtes prêt à partir ! N’oubliez pas : EEPROM octet 0 est le pointeur d’écriture de journal. Réglez-le à 1 pour commencer la journalisation à l’octet 1 sur un pic frais.
En raison de l’étalonnage, le FET et inducteur ne devraient jamais devenir chauds. Ni devriez vous entendez un bruit de sonnerie de la bobine d’inductance. Ces deux conditions indiquent une erreur de calibrage. Consultez le journal des données dans la mémoire EEPROM pour aider à déterminer où votre problème est peut-être.