Contacte

Tahometru digital bazat pe microcontroler PIC16F628. Un tahometru universal simplu bazat pe microcontrolerul ATtiny2313. Inginerie radio, electronică și circuite de bricolaj Tahometru simplu pe controlerul de vârf

Buna ziua.
Vă trimit spre considerare o diagramă a unui tahometru digital simplu pornit AVR ATtiny2313, KR514ID2, și optocuplerul proiectat de mine.
Voi face o rezervare imediat: există multe scheme similare pe Internet. Fiecare implementare are propriile sale avantaje și dezavantaje. Poate că versiunea mea se va potrivi cuiva mai mult.

Poate voi începe cu acestea. sarcini.
Sarcină: trebuie să faceți un turometru digital pentru a controla rotațiile motorului electric al mașinii.
Condiții introductive: Există un disc de referință gata făcut pentru 20 de găuri din imprimanta laser... Există multe optocuple de la imprimante stricate. Revoluții medii (de lucru) 4.000-5.000 rpm. Eroarea în rezultatele afișate nu trebuie să depășească ± 100 de rotații.

Prescripţie: sursa de alimentare pentru unitatea de control este de 36V (tahometrul va fi instalat în aceeași carcasă cu unitatea de comandă - mai multe despre cele de mai jos).

Mică digresiune lirică. Aceasta este mașina prietenului meu. Mașina este echipată cu un motor electric PIK-8, ale cărui rotații sunt controlate conform unei scheme modificate găsite pe Internet. La cererea unui prieten, a fost dezvoltat un tahometru simplu pentru mașină.

Inițial, s-a planificat utilizarea ATMega16 în circuit, dar după ce am luat în considerare condițiile, s-a decis să ne limităm la ATtiny2313, care funcționează de la un generator intern (RC) la o frecvență de 4 MHz.

Schema generala după cum urmează:

După cum puteți vedea, nimic complicat. Pentru a converti codul binar într-unul cu șapte segmente, am folosit decodorul KR514ID2, acesta oferă trei avantaje simultan.

  • În primul rând, economisiți spațiu în memoria ATtiny2313 prin reducerea codului de lucru (deoarece procedura de conversie programatică a unui cod binar într-un cod cu șapte segmente este absentă în firmware ca fiind inutilă).
  • În al doilea rând: reducerea sarcinii pe ieșirile ATtiny2313, deoarece LED-urile „iluminează” KR514ID2 (când este evidențiat numărul 8, consumul maxim va fi de 20-30 mA (tipic pentru un LED) * 7 = 140-210 mA, ceea ce este „mult” pentru ATtini2313 cu pașaportul maxim (încărcat) ) consum de 200 mA).
  • În al treilea rând, numărul de picioare „ocupate” ale microcontrolerului a fost redus, ceea ce ne oferă posibilitatea în viitor (dacă este necesar) de a face upgrade circuitului prin adăugarea de noi funcții.

Asamblarea dispozitivului implementat pe o placă de breadboard. Pentru aceasta a fost demontată placa de la un cuptor cu microunde nefuncțional care zăcea în coșuri. Un indicator LED digital, tranzistori cheie (VT1-VT4) și rezistențe de limitare (R1-R12) au fost luate ca kit și transferate la placa noua... Întregul aparat este asamblat, dacă sunt disponibile componentele necesare, cu pauze de fum în jumătate de oră. Fiind atent: microcircuitul KR514ID2 are un picior de putere pozitiv - 14 și un minus - 6 (marcat în diagramă)... În loc de KR514ID2, puteți utiliza orice alt decodor de cod binar într-unul cu șapte segmente alimentat de 5V. Am luat ce era la îndemână.
Pinii „h” și „i” ai indicatorului LED digital sunt responsabili pentru două puncte din centru dintre numere, nu sunt conectați ca fiind inutil.
După asamblare și firmware, cu condiția să nu existe erori de instalare, dispozitivul începe să funcționeze imediat după pornire și nu trebuie configurat.

Dacă este necesar să faceți modificări la firmware-ul turometrului, pe placă este prevăzut un conector ISP.

În diagramă, rezistorul de tragere R12, nominal de 30 kOhm, este selectat empiric pentru un optocupler specific. După cum arată practica, poate diferi pentru diferite optocuptoare, dar o valoare medie de 30 kΩ ar trebui să asigure o funcționare stabilă pentru majoritatea optocuptoarelor de imprimantă. Conform documentației pentru ATtiny2313, valoarea rezistenței interne de pull-up este de la 20 la 50 kOhm, în funcție de implementarea unui anumit lot de microcontrolere, (pagina 177 din fișa de date ATtiny2313), care nu este în întregime adecvat . Dacă cineva dorește să repete circuitul, poate include mai întâi un rezistor de pull-up intern, poate pentru tine, va funcționa pentru optocuplerul tău și MK. Nu a funcționat pentru mine pentru setul meu.

Așa arată un optocupler tipic de la o imprimantă.

LED-ul optocuplerului este alimentat printr-un rezistor de limitare de 1K pe care l-am plasat direct pe placa optocuplerului.
Pentru a filtra ondulațiile de tensiune, există doi condensatori în circuit, electrolitici la 220 μF x 25 V (care era la îndemână) și ceramici la 0,1 μF, ( schema generala includerea microcontrolerului este preluată din pașaportul ATtiny2313).

Pentru a-l proteja de praf și murdărie, placa turometrului este acoperită cu un strat gros de lac auto.

Înlocuirea componentelor.
Puteți utiliza orice LED din patru cifre, fie două duble, fie patru simple. În cel mai rău caz, asamblați indicatorul pe LED-uri separate.

În loc de KR514ID2, puteți utiliza KR514ID1 (care conține rezistențe de limitare a curentului în interior) sau 564ID5, K155PP5, K155ID9 (cu conexiune paralelă a picioarelor unui segment) sau orice alt convertor binar la șapte segmente (cu corespondență modificări ale conexiunii pinilor microcircuitului).

Cu condiția ca instalarea să fie transferată corect pe ATMega8 / ATMega16 MK, acest firmware va funcționa ca pe ATtiny2313, dar trebuie să corectați codul (schimbați numele constantelor) și să recompilați. Nu s-a făcut nicio comparație pentru alte MCU-uri AVR.

Tranzistoare VT1-VT4 - orice curent scăzut care funcționează în modul cheie.

Principiul de funcționare bazat pe numărarea numărului de impulsuri primite de la optocupler într-o secundă și recalcularea acestora pentru a afișa numărul de rotații pe minut. Pentru aceasta se folosește un numărător intern Timer / Counter1, care funcționează în modul de numărare a impulsurilor care sosesc la intrarea T1 (ieșire PD5 leg 9 MK). Pentru a asigura stabilitatea funcționării, modul de suprimare a respingerii software-ului este activat. Secundele sunt numărate de Timer / Counter0 plus o variabilă.

Calculul RPM, la care aș dori să mă opresc, are loc după următoarea formulă:
M = (N / 20) * 60,
unde M este rotația calculată pe minut (60 de secunde), N este numărul de impulsuri de la optocupler pe secundă, 20 este numărul de găuri din discul de referință.
Total, simplificând formula, obținem:
M = N * 3.
Dar! Microcontrolerului ATtiny2313 îi lipsește o funcție de multiplicare hardware. Prin urmare, a fost aplicată suma compensată.
Pentru cei care nu cunosc esența metodei:
Numărul 3 poate fi extins ca
3 = 2+1 = 2 1 + 2 0 .
Dacă luăm numărul nostru N, îl deplasăm la stânga cu 1 octet și adăugăm un alt N deplasat la stânga cu 0 octeți - obținem numărul nostru N înmulțit cu 3.
În firmware, codul AVR ASM pentru o operație de multiplicare pe doi octeți arată astfel:

Mul2bytes3:
CLR LoCalcByte // șterge registrele de lucru
CLR HiCalcByte
mov LoCalcByte, LoInByte // încărcați valorile obținute de la Timer / Counter1
mov HiCalcByte, HiInByte
CLC // curățați durata de viață a transferului
ROL LoCalcByte // Shift Through Carry Bit
ROL HiCalcByte
CLC
ADD LoCalcByte, LoInByte // se adună ținând cont de bitul de transport
ADC HiCalcByte, HiInByte
ret

Verificarea performanței și măsurarea preciziei a fost efectuată după cum urmează. Un disc de carton cu douăzeci de găuri a fost lipit de ventilatorul răcitorului computerului. Rotațiile mai rece au fost monitorizate prin BIOS placa de bazași au fost comparate cu indicatoarele turometrului. Abaterea a fost de aproximativ 20 rpm la 3200 rpm, ceea ce este de 0,6%.

Este foarte posibil ca discrepanța reală să fie mai mică de 20 de rotații, deoarece Măsurătorile plăcii de bază sunt rotunjite în 5 ture (pe baza observațiilor personale pentru o anumită placă).
Limita superioară de măsurare este 9.999 rpm. Limita inferioară de măsurare, teoretic de la ± 10 rotații, dar în practică nu a fost măsurată (un impuls de la optocupler pe secundă dă 3 rotații pe minut, care, ținând cont de eroare, teoretic ar trebui să măsoare corect viteza de la 4 rotații pe secundă). minut și mai sus, dar în practică acest indicator trebuie supraestimat de cel puțin două ori).

Mă voi opri separat asupra chestiunii nutriției.
Întregul circuit este alimentat de la o sursă de 5V, consumul estimat al întregului dispozitiv nu depășește 300 mA. Dar, conform termenilor TK, turometrul ar trebui să fie amplasat structural în interiorul unității de control al turației motorului, iar unitatea primește de la LATR presiune constantă 36V., Pentru a nu trage un fir de alimentare separat, în interiorul unității este instalat un LM317 în conexiunea pașaportului, în modul de scădere a sursei de alimentare la 5V (cu un rezistor de limitare și o diodă zener pentru a proteja împotriva supratensiunii accidentale) . Ar fi mai logic să folosiți un controler PWM în modul step-down convertor, precum MC34063, dar este problematic să cumpărați astfel de lucruri în orașul nostru, prin urmare, au folosit ceea ce au putut găsi.

Fotografii placa de turometru și dispozitivul finisat.


Mai multe fotografii







Din păcate, acum nu este posibil să faci poze cu aparatul.

După amenajarea plăcilor și primul asamblare de probă, cutia cu dispozitivul a trecut la vopsire.

Dacă turometrul dvs. nu funcționează imediat după pornire, cu o instalare corectă cu bună știință:

1) Verificați funcționarea microcontrolerului, asigurați-vă că funcționează de la generatorul intern. Dacă diagrama este asamblată corect, cadranul ar trebui să afișeze patru zerouri.

2) Verificați nivelul impulsurilor de la optocupler, dacă este necesar, selectați valoarea rezistenței R12 sau înlocuiți schema electrică a optocuplerului. Opțiunea de conectare inversă a opto-tranzistorului cu un pull-up la minus este posibilă, cu rezistorul intern de pull-up MK pornit sau nu. De asemenea, este posibil să utilizați un tranzistor într-un mod de funcționare cu cheie (inversoare).
optocupler

  • AVR
  • Adaugă etichete

    Tahometrul este proiectat să măsoare turația aproape oricărui motor. Pornind de la un motor cu 1 cilindru în doi timpi și terminând cu un motor în 4 timpi cu 16 cilindri. Indicație pe un indicator digital cu 4 cifre, precizie de măsurare 50
    rpm.

    După pornirea alimentării, turometrul începe imediat să măsoare rotațiile. Apăsarea butonului pentru prima dată va afișa numărul setat de impulsuri pe 1 rotație (în mod implicit, 2 impulsuri pe 1 rotație, ceea ce corespunde unui motor în 4 timpi și 4 cilindri). Afișajul va fi P-2.0. Apăsarea din nou a butonului va trece prin toate valorile permise - de la 0,5 la 8 impulsuri pe 1 rotație. Să pară puțin ciudat - 0,5 impulsuri, dar asta înseamnă doar că 1 impuls va fi în 2 revoluții. După setarea numărului necesar de impulsuri, după aproximativ 5 secunde - dispozitivul va scrie modificările în memoria EEPROM nevolatilă (adică atunci când reporniți alimentarea, nu trebuie să setați din nou numărul de impulsuri) și va trece la modul de măsurare a vitezei cu noul număr de impulsuri setat.

    Placă de circuit imprimat cu două părți

    Fotografie de avocat

    Ce este deloc turometru? Un turometru este un dispozitiv folosit pentru a măsura rpm (rotații pe minut) oricărui corp în rotație. Tahometrele sunt realizate pe bază de contact sau fără contact. Tahometrele optice fără contact folosesc de obicei un fascicul laser sau infraroșu pentru a controla rotația oricărui corp. Acest lucru se face prin calcularea timpului necesar pentru o rotație. În acest material, preluat de pe un site englezesc, vă arătăm cum să faceți un tahometru optic digital portabil folosind Arduino Uno... Să luăm în considerare o versiune extinsă a dispozitivului cu un afișaj LCD și un cod modificat.

    Circuitul tahometru al microcontrolerului

    Lista de piese pentru schema

    • Microcircuit - Arduino
    • Rezistoare - 33k, 270 ohmi, potențiometru 10k
    • Element LED - albastru
    • LED IR și fotodiodă
    • Ecran LCD 16 x 2
    • registru de deplasare 74HC595

    Aici, în loc de un senzor cu fantă, se folosește unul optic - reflectarea fasciculului. În acest fel, nu trebuie să-și facă griji cu privire la grosimea rotorului, numărul de lame nu modifică citirea și poate citi viteza tamburului - dar senzorul de slot nu poate.

    Deci, în primul rând pentru senzor ai nevoie de un LED IR emitent și o fotodiodă. Cum să-l asamblați - afișat în instrucțiuni pas cu pas... Faceți clic pe fotografie pentru a mări dimensiunea.

    • 1. Mai întâi trebuie să șlefuiți LED-ul și fotodioda pentru a le face plate.
    • 2. Apoi îndoiți fâșia de hârtie așa cum se arată în figură. Faceți două astfel de structuri astfel încât LED-ul și fotodioda să se potrivească perfect în ele. Lipiți-le împreună și vopsiți-le în negru.
    • 3. Introduceți LED-ul și fotodioda.
    • 4. Lipiți-le împreună cu super glue și lipiți firele.

    Valorile rezistoarelor pot varia în funcție de fotodioda pe care o utilizați. Potențiometrul ajută la scăderea sau creșterea sensibilității senzorului. Lipiți firele senzorului așa cum se arată în figură.

    Circuitul tahometrului folosește un registru de deplasare 74HC595 pe 8 biți Ecran LCD 16x2. Faceți o mică gaură în carcasă pentru a fixa indicatorul LED.

    Lipiți un rezistor de 270 ohmi la LED și introduceți-l în pinul 12 al Arduino. Senzorul este introdus într-un tub cub pentru a oferi rezistență mecanică suplimentară.

    Gata, aparatul este gata pentru calibrare si programare. Puteți descărca programul de la acest link.

    Video cu turometrul de casă


    Dispozitiv de securitate cu tensiune înaltă- arici electric. Astăzi vom continua să vorbim despre structurile necesare pentru a ne proteja casa. Dispozitivul pe care îl vom considera acum este destinat protejării unui apartament, birou, casă de vară și a unei mașini. Dispozitivul se numește - un arici electric de înaltă tensiune!

    Acest tahometru digital este potrivit pentru numărarea numărului de rotații ale aproape oricărui tip de motor cu ardere internă. Eroarea de măsurare a tahometrului este de numai 50 rpm. Pentru afișarea rezultatului este utilizat un afișaj LED cu patru cifre.
    Pentru a seta modul de operare, trebuie să utilizați butonul „Selectați”. Prima apăsare afișează modul de funcționare curent pe afișaj. Modul implicit de funcționare este al treilea, când emițătorul emite două impulsuri pe rotație a volantului. În consecință, pe afișaj va apărea inscripția R-2.0.

    Fiecare apăsare ulterioară a butonului comută modul de funcționare al turometrului la următorul. Sunt nouă în total: 0,5, 1, 2, 3, 4, 5, 6, 7, 8 impulsuri/revoluție, respectiv, stabilesc numărul de impulsuri emise de senzor pe o rotație a volantului. Cu cât numărul de impulsuri este mai mare, cu atât măsurarea este mai precisă.

    După selectarea modului de funcționare, trebuie să așteptați 5-10 secunde. În acest timp, turometrul va înregistra modul de funcționare în memoria microcontrolerului și va trece la modul de funcționare. În viitor, turometrul va trece imediat în modul de funcționare când este aplicată alimentarea. Dacă devine necesară reajustarea turometrului, apoi apăsați butonul „Selectați” și reglați din nou turometrul.

    Merită să acordați atenție parametrilor și structurii circuitului de intrare. Pentru un anumit tip de aprindere, sunt posibile unele ajustări ale cotelor, datorită diferite dispozitive aprindere in tipuri diferite auto. Acest lucru este necesar pentru ca turometrul să funcționeze bine cu armonicile fundamentale și să nu răspundă la armonicile superioare. Fără o astfel de corecție, funcționarea precisă a turometrului este imposibilă.

    Versiunea de firmware actualizată include funcția de testare a indicatorului. Acest lucru este necesar pentru a efectua un test de detectare a defecțiunilor senzorului de două secunde.

    Fișiere atașate:

    Firmware

    Amplificator auto monobloc simplu pe TDA1560Q PSU fără accelerație pe IRS2153 pentru laptopuri și telefoane mobile Conector USB extern în radioul auto

    Un tahometru universal simplu pe microcontrolerul ATtiny2313

    Acest tahometru simplu de pe ATtiny2313 poate număra numărul de rotații ale oricărui motor, fie el multifazic, multi-curse etc. Poate fi util la autovehicule pentru a afișa turația motorului. În acest caz, nu contează deloc câți curse sau cilindri are motorul. Poate fi folosit și împreună cu controlerele electronice ale motoarelor, fie ele monofazate sau trifazate.

    Circuitul tahometrului este foarte simplu - un microcontroler ATtiny2313 și un indicator LED cu patru caractere. De dragul simplității, nu există comutatoare cu tranzistori. Indicatorul poate fi utilizat atât cu un catod comun, cât și cu un anod comun - acesta este selectat în sursă. Tahometrul poate număra rotațiile atât pe secundă, cât și pe minut, ceea ce îl face complet versatil.

    În plus, dispozitivul are capacitatea controlul programului luminozitate: normală și scăzută. Dacă jumperul este deschis, luminozitatea normală este setată. Când contactele sunt închise, luminozitatea scade.


    Click pentru a mari
    Să mergem direct la diagramă. Dacă dispozitivul este conectat direct la un controler de motor la nivel TTL, atunci impulsurile pot fi aplicate pur și simplu pinului 6 al microcontrolerului. Altfel, ar trebui să fugi cel mai simplu convertor nivel pe tranzistor.

    Pentru a obține și stabiliza tensiunea de alimentare de +5 volți, regulator liniar 1117 cu abandon scăzut pentru o eficiență mai mare.

    Un indicator dintr-un cuptor cu microunde cu un anod comun este folosit ca indicator LED. Deoarece conține deja rezistențe de 220 ohmi, acestea nu sunt furnizate pe placa de circuit imprimat.


    Pe partea de sus placă de circuit imprimat există până la 10 jumperi, dar sunt foarte ușor de instalat.


    Componentele SMD sunt instalate pe revers: acestea sunt două condensatoare de 22 pF pentru un rezonator de cuarț, un microcircuit stabilizator și condensatori de filtru.

    Rezonatorul de cristal pentru microcontrolerul ATtiny2313 poate fi setat la 8 sau 4 MHz, acesta este setat în sursă și controlează prescaler-ul.

    Modul de afișare al rotațiilor - pe secundă sau pe minut - este setat în același mod în sursă. Pentru a afișa numărul de rotații pe minut, numărul calculat de rotații pe secundă este pur și simplu înmulțit cu software-ul cu 60. Există posibilitatea de rotunjire software a valorilor calculate. Aceste nuanțe sunt comentate în cod sursa.

    Când aprindeți microcontrolerul, trebuie să instalați siguranțe:

    CKSEL1 = 0
    BODLEVEL0 = 0
    BODLEVER1 = 0
    SPMEN = 0

    Sursa este scrisă în C în Codevision AVR. A fost împrumutat dintr-un alt proiect - un turometru pentru un elicopter cu trei pale.

    Pe scurt despre setare: este necesar să se determine în prealabil câte impulsuri pe 1 rotație vor fi furnizate la intrarea tahometrului. De exemplu, dacă sursa lor este un controler de motor trifazat pe LB11880, atunci iese prin Trei impuls pe rotatie axului. Prin urmare, ar trebui să specificați această valoare în codul sursă.

    Alegerea indicatorului - cu un anod comun sau cu un catod comun (valoare inutilă - comentariu):

    // # definește anodul
    #define Cathode

    Numărul de impulsuri tahometrice la 1 rotație a arborelui:

    #define byBladeCnt 2

    Selectarea frecvenței rezonatorului de cuarț - 0x00 pentru 4MHz, 0x01 - pentru 8MHz:

    #define Prescaler 0x01

    Selectarea afișajului RPM:

    lTmp = (62500L * 60L * (lung) wFlashCnt);

    Pentru a afișa numărul de rotații pe secundă, trebuie să eliminați înmulțirea cu 60:

    lTmp = (62500L * (lung) wFlashCnt);

    Pentru a dezactiva rotunjirea valorilor, trebuie să comentați următoarele rânduri:

    Dacă (prin afișare> 4)
    {
    wRpm ++;
    R+ = 10;
    }

    Deoarece acest design special folosește un indicator foarte specific, nu se aplică nicio configurație PCB.



    Ți-a plăcut articolul? Împărtășește-l