Termometeret bliver ikke mindre på Attiny2313. Termometeret kan ikke være mindre på Attiny2313 Beskrivelse af termometerkredsløbets funktion

hjem / Tidligere

Der findes rigtig mange termometerdiagrammer til AVR på internettet, men som altid vil du gerne have noget helt eget... Og du bør også strække hjernen. Dette termometer var et af mine første projekter.

Hvad jeg ønskede:

  • minimumsstørrelser (inden for rimelige grænser)
  • minimumsomkostninger
  • enkelhed i designet
  • høj repeterbarhed
  • alsidighed (mere om det senere)

Hvad skete der:

Efter at have set på lignende designs og røget en beskrivelse af den tinny, der var ved hånden (ATtiny2313), kom jeg til den konklusion, at det er muligt at forenkle de eksisterende designs lidt og forbedre deres egenskaber en smule.

Diagrammet viser den anden mulighed for at tænde for temperaturføleren, hvis den ikke ønsker at arbejde via en enkelt-leder bus (hvilket er meget sjældent). Bemærk venligst, at pull-up modstanden på ben 11 skal være nøjagtigt 4,7 kOhm. Formindskelse eller stigning kan føre til ustabil drift af sensoren, hvis den er tændt i et enkeltlederkredsløb.

Som du kan se, adskiller dette kredsløb sig fra lignende i fravær af transistorer til styring af segmenterne. Kredsløbet er således blevet forenklet med 4 transistorer og 4 modstande sammenlignet med tilsvarende kredsløb. Her vil nogle sige: "det er ikke muligt - der er en stor belastning på havnene!!!" Vi læser på denne controller " DC-strøm pr. I/O-ben - 40,0 mA". Vi har 8 segmenter i hvert symbol, 5 mA hver - det viser sig 40 mA!!!.

Lad os nu se på graferne fra den samme beskrivelse:

Det fremgår tydeligt af graferne, at strømmen kan nå 60 mA og endda 80 mA pr. pin. Nå, lad os ikke lade os rive med - 5 mA pr. segment (40 mA pr. symbol) er nok for os! Begrænsningsmodstandene er valgt til at producere en strøm på ca. 5 mA pr. segment. I mit kredsløb er der 470 Ohm. Lysstyrken af ​​segmenterne er fremragende!!! Så jeg lod mig rive med af teorien.

Øve sig!!!

Jeg tegnede printkortet ud fra deres overvejelser "så lille som muligt, men så enkelt som muligt." Derfor blev det med flere springere...

På billedet er der plads til kvarts - dette er for lidt alsidighed - jeg havde flere AT90S2313 stykker, der ikke har en intern oscillator. CRANK bruges i SOT-89-huset. Beskyttende zenerdioder BZX79-C5V1 i DO-35 hus. Kondensatorerne i strømfilteret er 10mkF * 16V tantal (ingen andre blev fundet), størrelse 3528 (SMD-B). Jeg plejer ikke at installere dem, men i stedet - 1mkF * 50V størrelse 1206. Ingen strømrelaterede fejl blev bemærket.

blankt bord lavet af "laser iron"

samlet bord: set fra siden af ​​lederne (stabilisator mangler)

set fra elementernes side (indikator ikke forseglet)

Projektet blev samlet i stykker, nogle fra færdige projekter fra internettet, nogle tilføjet af mig... Den oprindelige idé var en dynamisk visning. Problemet var, at der under kommunikationen med DS18B20 temperatursensoren opstod øjeblikke, hvor "scanningen" af indikationen stoppede. Derfor blev indikatoropdateringen ikke udført ved afbrydelser, men i hovedprogramsløjfen, og blev også indsat hist og her i proceduren for kommunikation med sensoren... Fordelen ved denne metode var den høje opdateringsfrekvens, som eliminerede flimrende problem.

Jeg glemte næsten - sikringer til normal drift af termometeret:

Så vi flashede det, tændte det... Hmm... det virker!!!

Så, som vi kan se, fik vi en ret simpel (hvor meget enklere???) enhed, som i størrelse ikke overstiger størrelsen af ​​indikatoren. Derudover er nøjagtigheden også høj: ifølge sensorbeskrivelsen "±0,5°C nøjagtighed fra -10°C til +85°C." Som praksis har vist, er nøjagtigheden meget højere - omkring ±0,1°C. Jeg tjekkede 10 kopier med et laboratorietermometer, der havde bestået metrologisk kontrol...

På radiomarkedet kiggede jeg på en trecifret syv-segments radio. Jeg købte en Attiny2313 mikrocontroller i en SOIC-pakke, DS18B20, en SMD-modstand og en SMD-kondensator. Jeg tegnede et printkort, tegnede et kredsløb baseret på printkortet, skrev et program, uploadede det til MK og:

Og dette er hvad der skete:

En farvetonefilm er limet til indikatoren (det var ikke muligt at fotografere indikatoren ordentligt uden).

Størrelsen kan også bedømmes ud fra den anvendte indikator:

Skema:

Et par ord om diagrammet og programmet. Kompakthed er ikke kommet uden ofre. Der er ingen strømbegrænsende modstande i kredsløbet, hvilket ikke er helt godt. For at øge belastningskapaciteten er indikatorkatoderne forbundet til to terminaler på MK på én gang.
Der er intet originalt i programmet. Skabelonen er udarbejdet ved hjælp af guiden fra CVAVR, resten af ​​delene er taget fra mit termometerur. Jeg brugte det korrigerede DS18B20 bibliotek, eller rettere sagt er det summen af ​​to biblioteker fra CVAVR til DS1820/DS18S20 og DS18B20, dvs. Enhver af ovenstående sensorer kan bruges i et termometer. Mere præcist, ikke mere end 4 sensorer i enhver kombination.
Sikringer: MK er konfigureret til at fungere fra en intern RC-oscillator ved 4 MHz. CKSEL = 0010, SUT = 10, alle andre = 1.

Resultat:
Jeg er ikke sikker på, at min version af et termometer, der bruger en syv-segment indikator, er den mindste.

Filer:

- Printplade i SL 5.0 format.

Du har ikke adgang til at downloade filer fra vores server - MK firmware.

Du har ikke adgang til at downloade filer fra vores server - Firmware-kilder.

Du har ikke adgang til at downloade filer fra vores server - Projekt for Proteus.

I denne artikel vil vi gennemgå digitalt termometer, bygge på mikrocontroller Attiny2313, udstyret fjernbetjening digital sensor DS18B20. Temperaturmåleområdet er fra -55 til +125 grader Celsius, temperaturmåletrinnet er 0,1 grad. Kredsløbet er meget enkelt, indeholder et minimum af dele og kan nemt samles med egne hænder.

Beskrivelse af driften af ​​termometerkredsløbet

Hjemmelavet elektronisk termometer med fjernsensor bygget på alt kendt. DS18B20 mikrokredsløbet fra Dallas fungerer som en temperatursensor. Op til 8 digitale sensorer kan bruges i et termometerkredsløb. Mikrocontrolleren kommunikerer med DS18B20 via 1Wire-protokollen.

Først søges og initialiseres alle tilsluttede sensorer, derefter aflæses temperaturen fra dem og vises derefter på den trecifrede syv-segmentindikator HL1. Indikatoren kan bruges med både en fælles katode (CC) og en fælles anode (CA). En lignende indikator blev også brugt. Hver indikator har sin egen firmware. Du kan måle temperaturen både hjemme og udenfor; for at gøre dette skal du tage DS18B20 udenfor vinduet.

For Attiny2313 skal du indstille sikringerne som følger (for programmet

Jeg fraskriver mig med det samme alt ansvar for den tid, penge, detaljer osv. du brugte... Hvis noget ikke virker for dig, så skyd det på dine skæve hænder.....

For nylig var jeg ved at bygge en computer med fuldstændig passiv køling. For bekvemt at overvåge processortemperaturen var det nødvendigt hurtigt at samle et termometer. Alle mulige programmer som "Everest", "Aida" og andre var ikke egnede til mig af en simpel grund: Jeg ville styre temperaturen, selv når skærmen var slukket. Eller endda med skærmen helt slukket. Det blev besluttet at samle et termometer baseret på en DS18B20 digital sensor, en billig AVR mikrocontroller og en syv-segment indikator. Først ønskede jeg at gentage termometerkredsløbet i henhold til en af ​​mulighederne foreslået på internettet. Men efter at have analyseret diagrammerne på internettet, kom jeg til den konklusion, at jeg ville være nødt til at opfinde min egen "cykel".

De designs, der blev præsenteret på internettet, havde en række ulemper, nemlig:
* lav hastighed på dynamisk display (50...100 hertz), på grund af hvilket det bliver ubehageligt at se på indikatoren; hvis du hurtigt kigger på den, ser det ud til, at tallene "bevæger sig";
* ikke alle designs målte tilstrækkeligt hele temperaturområdet (fra -55 til +125), for eksempel var der designs, der ikke målte temperaturer under nul grader, eller forkert målte temperaturer over 100 grader;
* der var ingen checksum check (CRC);
* segmenternes fælles ben blev forbundet til det ene ben på mikrocontrolleren uden nøgletransistorer, hvilket overbelastede MIKROCONTROLLERPORTE.

Hvis MK-portene er overbelastet, kan lysstyrken på indikatoren falde, og mikrocontrollerens ben kan også brænde. For et par år siden samlede jeg et termometer ved hjælp af en ATtiny2313+DS18B20 ved hjælp af et diagram fra internettet. Kredsløbet var uden nøgletransistorer. Ved en temperatur på 18 grader lyste tallet "1" klart, og tallet "8" lyste mærkbart svagere, jeg håber, at alle forstår, hvorfor alt sker på denne måde. Derfor lovede jeg mig selv ikke at overbelaste MK-benene i fremtiden. Forresten, her er et billede af det termometer, samlet efter et diagram fra internettet; Jeg tror, ​​det behøver ikke nogen kommentarer:

Jeg ville også lave et par forbedringer:
* Vis gradsymbolet på indikatoren (tiendedele af en grad var ikke så kritisk for mig);
* ur mikrocontrolleren fra en ekstern kvarts, da "1-Wire"-protokollen, som sensoren bruger, er kritisk for dannelsen af ​​tidsintervaller (tidsvinduer), så jeg ønskede ikke at bede om stabiliteten af ​​det indbyggede ur generator;
* indfør en kontrolsum kontrol i programmet, hvis kontrolsummen ikke stemmer overens, vises på indikatoren: "Crc";
* tilføje en diode til kredsløbet (for at beskytte kredsløbet mod strømvending);
* når strøm tilføres, lyser alle segmenter i 1 sekund (den såkaldte segmenttest);
* implementere DS18B20 kontrolsum verifikation.

Jeg skrev projektet i AVR Studio 5-miljøet, fandt funktionerne til at arbejde med sensoren et sted på internettet, og omskrev resten på min egen måde og kommenterede rigeligt på kildekoden. I slutningen af ​​artiklen er der et link til at downloade firmwaren og kildekoden.

Jeg brugte en syv-segment indikator til 3 velkendte steder, segmenter med en fælles anode. Også i arkivet (i slutningen af ​​artiklen) er der firmware til en indikator med en fælles katode. Jeg tilsluttede segmenternes fælles terminaler til to terminaler på MK, forbundet parallelt. Således bruger hver fælles stift på segmentindikatoren 2 MK stifter til at øge belastningskapaciteten af ​​stifterne.

Jeg brugte ATtiny2313A mikrocontrolleren (du kan også bruge ATtiny2313 eller ATtiny2313L), ved at bruge næsten alle frie ben (undtagen nulstillingsstiften). Hvis du samler et termometer på ATmega8, kan du tilslutte 3 eller 4 ben parallelt for at øge portenes belastningskapacitet.

Enhedsdiagram:

Jeg vedhæfter billeder af det samlede termometer. Der er endnu ingen sag, da termometeret bliver indbygget i pc-kabinettet.

Tegn.
Temperaturføleren er ikke tilsluttet, eller der er en kortslutning på dataledningen:

Kontrolsumfejl (CRC):

Temperaturføler tilsluttet, temperatur fra -55 til -10 grader:

Temperaturføler tilsluttet, temperatur fra -9 til -1 grader:

Temperaturføler tilsluttet, temperatur fra 0 til 9 grader:

Temperaturføler tilsluttet, temperatur fra 10 til 99 grader:

Temperaturføler tilsluttet, temperatur fra 100 til 125 grader:

Den dynamiske visningsfrekvens er flere kilohertz, så flimren er ikke mærkbar for øjet selv med et hurtigt blik på indikatoren.
For dem, der ønsker at gentage designet, kompilerede jeg flere firmware til forskellige kvarts: 4 MHz, 8 MHz, 10 MHz, 12 MHz, 16 MHz.
Jeg lavede også firmware til indikatorer med en fælles anode (OA) og en fælles katode (OC). Al firmware er i arkivet (se nedenfor).

UPD
Opdaterede firmwaren. Mindre rettelser, mindre godbidder. De vigtigste er stdint datatyper, fleksibel konfiguration af ben til segmenter. Alle ændringer er beskrevet i kildeoverskriften.

Der findes rigtig mange termometerdiagrammer til AVR på internettet, men som altid vil du gerne have noget helt eget... Og du bør også strække hjernen. Dette termometer var et af mine første projekter.

Hvad jeg ønskede:

  • minimumsstørrelser (inden for rimelige grænser)
  • minimumsomkostninger
  • enkelhed i designet
  • høj repeterbarhed
  • alsidighed (mere om det senere)

Hvad skete der:

Efter at have set på lignende designs og røget en beskrivelse af den tinny, der var ved hånden (ATtiny2313), kom jeg til den konklusion, at det er muligt at forenkle de eksisterende designs lidt og forbedre deres egenskaber en smule.

Diagrammet viser den anden mulighed for at tænde for temperaturføleren, hvis den ikke ønsker at arbejde via en enkelt-leder bus (hvilket er meget sjældent). Bemærk venligst, at pull-up modstanden på ben 11 skal være nøjagtigt 4,7 kOhm. Formindskelse eller stigning kan føre til ustabil drift af sensoren, hvis den er tændt i et enkeltlederkredsløb.

Som du kan se, adskiller dette kredsløb sig fra lignende i fravær af transistorer til styring af segmenterne. Kredsløbet er således blevet forenklet med 4 transistorer og 4 modstande sammenlignet med tilsvarende kredsløb. Her vil nogle sige: "det er ikke muligt - der er meget belastning på havnene!!!". Læs på denne controller " DC-strøm pr. I/O-ben - 40,0 mA". Vi har 8 segmenter i hvert symbol, 5 mA hver - det viser sig 40 mA !!!.

Lad os nu se på graferne fra den samme beskrivelse:

Det fremgår tydeligt af graferne, at strømmen kan nå 60 mA og endda 80 mA pr. pin. Nå, lad os ikke lade os rive med - 5 mA pr. segment (40 mA pr. symbol) er nok for os! Begrænsningsmodstandene er valgt til at producere en strøm på ca. 5 mA pr. segment. I mit kredsløb er der 470 Ohm. Lysstyrken af ​​segmenterne er fremragende!!! Så jeg blev revet med af teorien.

Øve sig!!!

Jeg tegnede printpladen ud fra deres overvejelser "så lille som muligt, men så enkel som muligt." Derfor viste det sig at have flere jumpere...

På billedet er der plads til kvarts - dette er for lidt alsidighed - jeg havde flere AT90S2313 stykker, der ikke har en intern oscillator. CRANK bruges i SOT-89-huset. Beskyttende zenerdioder BZX79-C5V1 i DO-35 hus. Kondensatorerne i strømfilteret er 10mkF * 16V tantal (ingen andre blev fundet), størrelse 3528 (SMD-B). Jeg plejer ikke at installere dem, men i stedet - 1mkF * 50V størrelse 1206. Ingen strømrelaterede fejl blev bemærket.

blankt bord lavet af "laser iron"

samlet bord: set fra siden af ​​lederne (stabilisator mangler)

set fra elementernes side (indikator ikke forseglet)

Projektet blev samlet i stykker, nogle fra færdige projekter fra internettet, nogle tilføjet af mig... Den oprindelige idé var en dynamisk visning. Problemet var, at der under kommunikationen med DS18B20 temperatursensoren opstod øjeblikke, hvor "scanningen" af indikationen stoppede. Derfor blev indikatoropdateringen ikke udført ved afbrydelser, men i hovedprogramsløjfen, og blev også indsat hist og her i proceduren for kommunikation med sensoren... Fordelen ved denne metode var den høje opdateringsfrekvens, som eliminerede flimrende problem.

Jeg glemte næsten - sikringer til normal drift af termometeret:

Så vi flashede det, tændte det... Hmm... det virker!!!

Så, som vi kan se, fik vi en ret simpel (hvor meget enklere???) enhed, som i størrelse ikke overstiger størrelsen af ​​indikatoren. Derudover er nøjagtigheden også høj: ifølge sensorbeskrivelsen - "±0,5°C nøjagtighed fra -10°C til +85°C". Som praksis har vist, er nøjagtigheden meget højere - omkring ±0,1°C. Jeg tjekkede 10 kopier med et laboratorietermometer, der havde bestået metrologisk kontrol...


26.04.2014
sPlan er et praktisk værktøj til at tegne elektroniske kredsløb. Den har en enkel og intuitiv grænseflade. Programmet indeholder...

Et meget praktisk program til at læse pdf Foxit Reader
26.04.2014
Foxit Reader - Kompakt og hurtigt program til læsning af PDF-filer. Kan tjene som et alternativ til den populære PDF-fremviser - Adobe Reader....


22.04.2014
Proteus VSM er et mikrocontroller-enhedssimulatorprogram. Understøtter MK: PIC, 8051, AVR, HC11, ARM7/LPC2000 og andre almindelige processorer....


01.04.2014
Projektsiden, som har været i frossen tilstand i lang tid, begynder igen at arbejde med fornyet kraft, med nye artikler og...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM er et mikrocontroller-enhedssimulatorprogram. Understøtter MK: PIC, 8051, AVR, HC11, ARM7/LPC2000 og andre almindelige processorer....

Splan 7.0.0.9 Rus + Portable + Viewer Final
26.04.2014
sPlan er et praktisk værktøj til at tegne elektroniske kredsløb. Den har en enkel og intuitiv grænseflade. Programmet indeholder...

DIY digital loddestation (ATmega8, C)
27.05.2012
Sammensætning: ATmega8, LM358, IRFZ44, 7805, bro, 13 modstande, et potentiometer, 2 elektrolytter, 4 kondensatorer, trecifret LED syv-segment...

© 2023 skudelnica.ru -- Kærlighed, forræderi, psykologi, skilsmisse, følelser, skænderier