Taula de continguts:

Mesurador de condensadors ATTiny85: 4 passos
Mesurador de condensadors ATTiny85: 4 passos

Vídeo: Mesurador de condensadors ATTiny85: 4 passos

Vídeo: Mesurador de condensadors ATTiny85: 4 passos
Vídeo: ⚡ Construye tu generador de señal fuente de corriente 4-20mA con ATtiny85 2024, Desembre
Anonim
Mesurador de condensadors ATTiny85
Mesurador de condensadors ATTiny85
Mesurador de condensadors ATTiny85
Mesurador de condensadors ATTiny85

Aquesta instrucció és per a un mesurador de condensadors basat en l'ATTiny85 amb les funcions següents.

  • Basat en ATTiny85 (DigiStamp)
  • Pantalla OLED SSD1306 de 0,96"
  • Mesura de freqüència per a condensadors de baix valor 1pF - 1uF mitjançant oscil·lador 555
  • Mesura del temps de càrrega per a condensadors d’alt valor 1uF - 50000uF
  • 2 ports separats utilitzats per als mètodes per minimitzar la capacitat estaria
  • Dos valors de corrent utilitzats durant el temps de càrrega per minimitzar el temps dels condensadors grans
  • Auto zeros del mètode 555 a l'inici, es poden canviar a zero amb el botó polsador
  • Una prova ràpida que s’utilitza per seleccionar quin mètode s’ha d’utilitzar per a cada cicle de mesura.
  • La precisió del mètode de temps de càrrega es pot millorar gràcies al suport per a l’ajust de freqüència del rellotge OSCVAL

Pas 1: Esquema i teoria

Esquema i teoria
Esquema i teoria

L’esquema mostra l’ATTiny que condueix la pantalla OLED SSD1306 mitjançant una interfície I2C. S’alimenta directament des d’una bateria LiOn 300 mAh i s’inclou un punt de càrrega que es pot utilitzar amb un carregador extern compatible LiOn.

El primer mètode de mesura es basa en mesurar la freqüència d’un oscil·lador lliure de 555. Té una freqüència base determinada per les resistències i un condensador que hauria de ser de gran precisió ja que això determina la precisió de les mesures. Vaig utilitzar un condensador de poliestirè amb un 1% de 820pF que tenia, però es poden utilitzar altres valors al voltant de l’1nF. El valor s’ha d’introduir al programari juntament amb una estimació de qualsevol capacitat perduda (~ 20pF). Això va donar una freqüència base d’uns 16 KHz. La sortida del 555 s’alimenta a PB2 de l’ATTiny que es programa com a comptador de maquinari. Mesurant el recompte durant un període d'aproximadament 1 segon, es pot determinar la freqüència. Això es fa a l’inici per determinar la freqüència base. Quan s’afegeix un condensador en prova al paral·lel al condensador base, es redueix la freqüència i quan es mesura i es compara amb la freqüència base es pot calcular el valor de la capacitat afegida.

La bona característica d’aquest mètode és que el valor calculat només depèn de la precisió del condensador base. El període de la mesura no té importància. La resolució depèn de la resolució de les mesures de freqüència que és bastant elevada, de manera que es pot mesurar fins i tot una capacitat afegida molt petita. El factor limitant sembla ser el "soroll de freqüència" de l'oscil·lador 555, que per a mi equival a uns 0,3 pF.

El mètode es pot utilitzar en un rang decent. Per millorar el rang, sincronitzo el període de mesura amb la detecció de vores dels polsos entrants. Això significa que fins i tot l'oscil·lació de baixa freqüència, com 12Hz (amb un condensador de 1uF), es mesura amb precisió.

Per als condensadors més grans, el circuit està disposat per utilitzar un mètode de sincronització de càrrega. En això, el condensador que es prova es descarrega per assegurar-se que comença a 0 i es carrega a través d'una resistència coneguda de la tensió d'alimentació. Un ADC a l'ATTiny85 s'utilitza per controlar la tensió del condensador i es mesura el temps per passar del 0% al 50% de càrrega. Es pot utilitzar per calcular la capacitat. Com que la referència per a l'ADC és també la tensió d'alimentació, això no afecta la mesura. Tanmateix, la mesura absoluta del temps que es fa depèn de la freqüència del rellotge ATTiny85 i les variacions en això afecten el resultat. Es pot utilitzar un procediment per millorar la precisió d’aquest rellotge mitjançant un registre d’afinació de l’ATTiny85 i es descriu més endavant.

Per descarregar el condensador a 0V, s’utilitza un MOSFET de canal n juntament amb una resistència de baix valor per limitar el corrent de descàrrega. Això significa que fins i tot els condensadors de gran valor es poden descarregar ràpidament.

Per carregar el condensador s’utilitzen 2 valors de resistència de càrrega. Un valor base proporciona temps de càrrega raonables per als condensadors des d’1uF fins a aproximadament 50uF. S'utilitza un MOSFET de canal p per paral·lelitzar en una resistència inferior per permetre mesurar condensadors de major valor en un interval raonable. Els valors escollits donen un temps de mesura d'aproximadament 1 segon per a condensadors de fins a 2200uF i proporcionalment més llarg per a valors més grans. A l'extrem inferior del valor, el període de mesura s'ha de mantenir raonablement llarg per permetre determinar la transició a través del llindar del 50% amb prou precisió. La freqüència de mostreig de l’ADC és d’uns 25uSec, de manera que un període mínim de 22mSec proporciona una precisió raonable.

Com que ATTiny té una E / S limitada (6 pins), l'assignació d'aquest recurs s'ha de fer amb cura. Es necessiten 2 pins per a la pantalla, 1 per a l'entrada del temporitzador, 1 per a l'ADC, 1 per al control de descàrrega i 1 per al control de la taxa de càrrega. Volia un botó de control que permetés tornar a fer zero a qualsevol punt. Per fer-ho, connecteu la línia I2C SCL. Com que els senyals I2C són de drenatge obert, no hi ha cap conflicte elèctric en permetre que el botó estiri aquesta línia cap avall. La pantalla deixarà de funcionar amb el botó premut, però això no té cap conseqüència, ja que es reprèn quan es deixa anar el botó.

Pas 2: construcció

Construcció
Construcció
Construcció
Construcció
Construcció
Construcció

Ho vaig fer en una petita caixa impresa en 3D de 55 mm x 55 mm. Dissenyada per contenir els 4 components principals; la placa DigiStamp ATTiny85, la pantalla SSD1306, la bateria LiOn i un petit prototip de placa que conté el temporitzador 55 i l'electrònica de control de càrrega.

Recinte a

Peces necessàries

  • Tauler DigiStamp ATTiny85. He utilitzat una versió amb un connector microUSB que s’utilitza per carregar firmware.
  • Pantalla OLED SSD1306 I2C
  • Bateria LiOn de 300 mAH
  • Petita tira de prototipat
  • Xip temporitzador CMOS 555 (TLC555)
  • MOSFET AO3400 de canal n
  • MOSFET de canal p AO3401
  • Resistències 4R7, 470R, 22K, 2x33K
  • Condensadors 4u7, 220u
  • Condensador de precisió 820pF 1%
  • Interruptor lliscant en miniatura
  • 2 x 3 capçals de pin per a ports de càrrega i ports de mesura
  • Polsador
  • Recinte
  • Connecteu filferro

Eines necessàries

  • Soldador de punt fi
  • Pinces

Primer conformeu el circuit del temporitzador 555 i els components de càrrega a la placa prototip. Afegiu cables voladors per a les connexions externes. Introduïu el commutador de corredissa i el punt de càrrega i el port de mesura al recinte. Col·loqueu la bateria i feu el cablejat d'alimentació principal al punt de càrrega, feu lliscar l'interruptor. Connecteu la terra al polsador. Col·loqueu l'ATTiny85 al seu lloc i completeu el lligam.

Podeu fer algunes modificacions d’estalvi d’energia al tauler ATTiny abans d’ajustar-lo, cosa que reduirà una mica el corrent i allargarà la vida de la bateria.

www.instructables.com/Reducing-Sleep-Curre…

Això no és crític, ja que hi ha un interruptor d’encesa per apagar el comptador quan no s’utilitza.

Pas 3: programari

Podeu trobar programari per a aquest condensador a

github.com/roberttidey/CapacitorMeter

Es tracta d’un esbós basat en Arduino. Necessita biblioteques per a la pantalla i I2C que es poden trobar a

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Aquests s’han optimitzat perquè ATTiny ocupi una memòria mínima. La biblioteca I2C és un mètode de xoc de bits d’alta velocitat que permet utilitzar 2 pins qualsevol. Això és important ja que els mètodes I2C que fan servir el port sèrie utilitzen PB2, que està en conflicte amb l’ús del temporitzador / comptador necessari per mesurar la freqüència 555.

El programari s’estructura al voltant d’una màquina d’estats que fa la mesura a través d’un cicle d’estats. Un ISR admet el desbordament del comptador del temporitzador per ampliar el maquinari de 8 bits. Un segon ISR admet l'ADC que funciona en mode continu. Això dóna la resposta més ràpida al circuit de càrrega que creua el llindar.

Al començament de cada cicle de mesura, la funció getMeasureMode determina quin és el mètode més adequat per a cada mesura.

Quan s’utilitza el mètode 555, el temps del recompte només comença quan el comptador ha canviat. De la mateixa manera, el temps només s'atura després de l'interval nominal de mesura i quan es detecta una vora. Aquesta sincronització permet un càlcul precís de la freqüència fins i tot per a freqüències baixes.

Quan el programari s'inicia, les primeres 7 mesures són "cicles de calibratge" que s'utilitzen per determinar la freqüència base del 555 sense condensador afegit. Es fan una mitjana dels darrers 4 cicles.

Hi ha suport per ajustar el registre OSCAL per a l’afinació del rellotge. Us proposo establir OSCCAL_VAL a 0 inicialment a la part superior de l’esbós. Això significa que s’utilitzarà el calibratge de fàbrica fins que es realitzi l’afinació.

Cal ajustar el valor del condensador base 555. També afegeixo una quantitat estimada de capacitància perduda.

Si s’utilitzen diferents resistències per als mètodes de càrrega, també caldrà canviar els valors CHARGE_RCLOW i CHARGE_RCHIGH del programari.

Per instal·lar el programari, utilitzeu el mètode digistamp normal per carregar el programari i connectar el port USB quan se us demani. Deixeu l’interruptor d’alimentació en la posició apagada, ja que l’USB subministrarà energia per a aquesta operació.

Pas 4: funcionament i calibració avançada

L’operació és molt senzilla.

Després d’engegar la unitat i d’esperar que acabi el zero de calibratge, connecteu el condensador que es prova a un dels dos ports de mesura. Utilitzeu els ports 555 per a condensadors de baix valor <1uF i el port de càrrega per a condensadors de valor superior. Per als condensadors electrolítics connecteu el terminal negatiu al punt de terra comú. Durant les proves, el condensador es carregarà fins a uns 2V.

Es pot canviar el port 555 mantenint premut el botó durant aproximadament 1 segon i deixant-lo anar. Assegureu-vos que no hi hagi res connectat al port 555 per a això.

Calibratge avançat

El mètode de càrrega depèn de la freqüència de rellotge absoluta de l’ATTiny85 per mesurar el temps. El rellotge utilitza l’oscil·lador RC intern disposat per donar un rellotge nominal de 8 MHz. Tot i que l'estabilitat de l'oscil·lador és bastant bona per a variacions de tensió i temperatura, la seva freqüència es pot reduir bastant per cent, tot i que està calibrat de fàbrica. Aquest calibratge estableix el registre OSCCAL a l’inici. Es pot millorar el calibratge de fàbrica comprovant la freqüència i fent un ajustament més òptim del valor OSCCAL per adaptar-se a una placa ATTiny85 en particular.

Encara no he aconseguit encaixar en un mètode més automàtic al firmware, així que faig servir el següent procediment manual. Hi ha dues variacions possibles en funció de les mesures externes disponibles; ja sigui un mesurador de freqüència capaç de mesurar la freqüència de la forma d'ona triangular al port 555, o bé una font d'ona quadrada de freqüència coneguda, p. 10 KHz amb nivells de 0V / 3,3V que es poden connectar al port 555 i anul·lar la forma d'ona per forçar aquesta freqüència al comptador. He utilitzat el segon mètode.

  1. Engegeu el mesurador a la seva potència normal sense condensadors connectats.
  2. Connecteu el mesurador de freqüència o el generador d’ones quadrades al port 555.
  3. Reinicieu el cicle de calibratge prement el botó.
  4. Al final del cicle de calibratge, la pantalla mostrarà la freqüència determinada pel comptador i el valor OSCCAL actual. Tingueu en compte que l’ús repetit del cicle de calibratge alternarà entre mostrar la freqüència mesurada i la visualització normal sense pantalla.
  5. Si la freqüència visualitzada és inferior a la que es coneix, significa que la freqüència del rellotge és massa alta i viceversa. Trobo que un increment OSCCAL ajusta el rellotge aproximadament un 0,05%
  6. Calculeu un valor OSCCAL nou per millorar el rellotge.
  7. Introduïu el nou valor OSCCAL a OSCCAL_VAL a la part superior del firmware.
  8. Reconstruïu i pengeu un nou microprogramari. Repetiu els passos 1-5 que haurien de mostrar el nou valor OSCCAL i la nova mesura de freqüència.
  9. Si cal, torneu a repetir els passos fins aconseguir el millor resultat.

La nota és important per fer la part de mesura d’aquesta afinació quan s’executa amb alimentació normal no USB per minimitzar qualsevol canvi de freqüència a causa del voltatge de subministrament.

Recomanat: