Satura rādītājs:
- 1. darbība. Nepieciešamās sastāvdaļas
- 2. darbība: shematiskā diagramma
- 3. darbība. Izpratne par ķēdi
- 4. solis: frekvences un sprieguma aprēķins
- 5. darbība: Arduino kods
- 6. darbība. Secinājums
Video: Barošanas avota frekvences un sprieguma mērīšana, izmantojot Arduino: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Ievads:
Šī projekta mērķis ir izmērīt barošanas frekvenci un spriegumu, kas šeit, Indijā, ir no 220 līdz 240 voltiem un 50 Hz. Es izmantoju Arduino signāla uztveršanai un frekvences un sprieguma aprēķināšanai, jūs varat izmantot jebkuru citu mikrokontrolleri vai plati. Ķēdei ir nepieciešami daži komponenti, un tā ir diezgan precīza visiem praktiskiem mērķiem.
1. darbība. Nepieciešamās sastāvdaļas
- Arduino Uno
- IC LM358
- Noņemiet transformatoru (no 220V līdz 12V)
-
Kondensatori:
- 0.1uF
- 2 x 1uF
-
Rezistori:
- 3 x 1 kOhm
- 2 x 100 kOhm
- 1,5 kOhm
- 3,3 kOhm
- 6,8 kOhm
- 3 x 1N4148 diode
- Maizes dēlis un džemperis (pēc izvēles)
2. darbība: shematiskā diagramma
Iepriekš minētajā shēmā transformatora primārais ir pievienots barošanas tīklam, un primārais ir pievienots mūsu mērīšanas ķēdei
3. darbība. Izpratne par ķēdi
Saskaņā ar funkcionalitāti šo ķēdi var sadalīt četrās daļās:
A: nulles šķērsošanas detektora ķēde
Šī ķēde ģenerē 5 V kvadrātveida impulsu ikreiz, kad sinusa viļņi pāriet no pozitīva uz negatīvu. Rezistors R1 apvienojumā ar D1 un D2 ierobežo ieejas sprieguma svārstības diodes krustojumā līdz -0,6V līdz +5,6V (pieņemot, ka diodes priekšējais spriegums ir 0,6V). Turklāt jūs varat palielināt ķēdes ieejas sprieguma diapazonu, palielinot R1 vērtību.
Rezistors R2 un R3 veido sprieguma dalītāju, lai ierobežotu negatīvo sprieguma svārstību līdz -0,24 voltiem, jo LM358 ieejas kopējā režīma spriegums ir ierobežots līdz -0,3 voltiem.
Rezistors R4, R5, kondensators C1 un op-amp (šeit tiek izmantots kā salīdzinājums) veido Schmitt Trigger ķēdi, kur rezistors R4 un R5 nosaka histerēzi pie ieejas +49,5 mV virs zemes. Schmitt Trigger izeja tiek ievadīta Arduino PIN2 tālākai apstrādei.
B: Izolācija un sprieguma samazināšana
Kā norāda nosaukums, šī daļa izolē un samazina spriegumu līdz aptuveni 12 Vrms. Pazeminātais spriegums tiek tālāk ievadīts instrumentu ķēdē.
C: maksimuma detektora ķēde
Šī shēma nosaka maksimālo ieejas signāla maksimālo spriegumu. Rezistoru dalītājs R6 un R7 samazina ieejas spriegumu par koeficientu 0,23 (12Vrms tiek samazināts līdz 2,76Vrms). Diods D3 vada tikai pozitīvo signāla pusciklu. Spriegums C2 palielinās līdz rektificētā signāla maksimālajai vērtībai, kas tiek padota uz Arduino analogo tapu A0, lai tālāk aprēķinātu spriegumu.
Turklāt jūs varat aizstāt šo ķēdi ar precīzu pīķa detektora ķēdi, kā šeit minēts. Bet maniem demonstrācijas nolūkiem iepriekš minētā shēma būs pietiekama.
D: Arduino
Šajā daļā Arduino uztver Schmitt Trigger ķēdes ģenerētos kvadrātveida impulsus un nolasa analogo spriegumu no pīķa detektora ķēdes. Datus tālāk apstrādā, lai noteiktu kvadrātveida impulsa laika periodu (tātad frekvenci) (kas ir vienāds ar maiņstrāvas padeves laiku) un barošanas spriegumu.
4. solis: frekvences un sprieguma aprēķins
Biežuma aprēķins:
Ar Arduino palīdzību mēs varam izmērīt signāla laika periodu T. Kvadrātveida viļņu impulsi no nulles šķērsošanas detektora tiek ievadīti 2. tapā, no turienes mēs varam izmērīt katra impulsa laika periodu. Mēs varam izmantot Arduino iekšējo taimeri (īpaši Timer1), lai ar pārtraukumiem aprēķinātu laika periodu starp divām kvadrātveida impulsa augošajām malām. Taimeris palielinās par 1 pulksteņa ciklā (bez prescaler = 1), un vērtība tiek saglabāta reģistrā TCNT1. Tādējādi 16Mhz pulkstenis katru mikrosekundi palielina skaitītāju par 16. Līdzīgi prescaler = 8 taimeris tiek palielināts par 2 katru mikrosekundi. Līdz ar to laika posms starp divām augošajām malām
T = (TCNT1 vērtība) / laiks, kas vajadzīgs katram skaitīšanai
Kur, laiks, kas vajadzīgs katram skaitīšanai = prescaler / (Arduino pulksteņa ātrums (16 MHz)
Tādējādi frekvence f = 1 / T = (Arduino pulksteņa ātrums (16 MHz) / (prescaler * TCNT! Vērtība)
Tādējādi taimera ātrumu (Hz) norāda = (Arduino pulksteņa ātrums (16 MHz)) / prescaler
un signāla frekvenci norāda = (Arduino pulksteņa ātrums
Attiecīgi mēs varam aprēķināt frekvenci f no sakarības f = 1/T.
Sprieguma aprēķins:
Arduino borta ADC izšķirtspēja ir 10 biti (iespējamās vērtības = 2^10 = 1024), atgriežot vērtības diapazonā no 0 līdz 1023. Lai aprēķinātu atbilstošo analogo spriegumu V, mums jāizmanto šāda sakarība
V = (ADC nolasījums) * 5/1023
Lai aprēķinātu barošanas spriegumu Vs (rms), mums jāņem vērā transformatoru attiecība, rezistoru dalītājs R6R7 un pīķa detektora ķēde. Mēs varam vienkārši apkopot dažādus faktorus/attiecību kā:
Transformatora attiecība = 12/230 = 0,052
Rezistoru dalītājs = R7/(R6 + R7) = 0,23
Maksimālā detektora ķēde = 1.414
Vs (rms) = V/(1,414*0,052*0,23) = (ADC lasījums)*0,289
Jāatzīmē, ka šī vērtība ir tālu no faktiskās vērtības, galvenokārt kļūdas dēļ faktiskajā transformatora attiecībā un diodes priekšējā sprieguma kritumā. Viens veids, kā to apiet, ir noteikt koeficientu pēc ķēdes montāžas. Tas ir, mērot barošanas spriegumu un spriegumu pāri kondensatoram C2 atsevišķi ar multimetru, pēc tam aprēķinot Vs (rms) šādi:
Vs (rms) = ((barošanas spriegums *5)/(spriegums C2 *1023)) *(ADC rādījums)
manā gadījumā Vs (rms) = 0,33*(ADC lasījums)
5. darbība: Arduino kods
#define volt_in A0 // analogā sprieguma nolasīšanas tapa
gaistošs uint16_t t_periods; uint16_t ADC_value = 0; pludiņš, frekvence; void isr () {t_period = TCNT1; // saglabāt TCNT1 vērtību t_periodā TCNT1 = 0; // atiestatīt taimeri1 ADC_value = analogRead (volt_in); // lasīt analogo spriegumu} float get_freq () {uint16_t timer = t_period; ja (taimeris == 0) atgriežas 0; // lai izvairītos no dalīšanas ar nulli cits atgriežas 16000000.0/(8UL*taimeris); // frekvenci norāda f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bits (CS11); // iestatīt prescaler uz 8 TCNT1 = 0; // reset Timer1 value TIMSK1 = bit (TOIE1); // iespējot taimera1 pārplūdes pārtraukumu EIFR | = bit (INTF0); // notīrīt INT0 pārtraukšanas karodziņu Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // iespējot ārējo pārtraukumu (INT0) aizkavi (1000); detachInterrupt (0); biežums = get_freq (); volt = ADC_vērtība*0,33; Stīgu buf; buf += virkne (biežums, 3); buf += F ("Hz / t"); buf += Stīga (volt); buf += F ("volti"); Serial.println (buf); }
6. darbība. Secinājums
Jūs varat salikt ķēdi maizes plāksnē un pielāgot kodu un pievienot SD karti, lai saglabātu datus, kurus vēlāk var analizēt. Viens no šādiem piemēriem ir tas, ka jūs varat analizēt spriegumu un frekvenci pīķa stundās.
Shēmā, ko samontēju maizes dēļā, tika izmantots LM324 (četrkāršs opamp), nevis LM358 (dubults opamp), jo man tobrīd nebija šī IC un slēgšana visā valstī COVID-19 pandēmijas dēļ man apgrūtināja jauna IC iegūšanu.. Tomēr tas neietekmēs ķēdes darbību.
Jūtieties brīvi komentēt zemāk visus ieteikumus un jautājumus.
Ieteicams:
Regulējams sprieguma līdzstrāvas padeve, izmantojot sprieguma regulatoru LM317: 10 soļi
Regulējams sprieguma līdzstrāvas padeve, izmantojot LM317 sprieguma regulatoru: Šajā projektā esmu izstrādājis vienkāršu regulējama sprieguma līdzstrāvas barošanas avotu, izmantojot LM317 IC ar LM317 barošanas shēmas shēmu. Tā kā šai shēmai ir iebūvēts tilta taisngriezis, lai mēs varētu tieši savienot 220V/110V maiņstrāvas padevi pie ieejas
Kā izveidot regulējamu barošanas bloku no vecā datora barošanas avota: 6 soļi (ar attēliem)
Kā izveidot regulējamu barošanas bloku no vecā datora barošanas avota: man ir vecs datora barošanas avots. Tāpēc es esmu nolēmis no tā izgatavot regulējamu barošanas bloku. Mums ir nepieciešams atšķirīgs sprieguma diapazons pārbaudiet dažādas elektriskās ķēdes vai projektus. Tāpēc vienmēr ir lieliski, ja ir regulējams
Lēta barošanas avota izejas sprieguma maiņa: 3 soļi
Lēta barošanas avota izejas sprieguma maiņa: šī pamācība parāda, kā nomainīt detaļas nelielā barošanas avotā, lai pielāgotu izejas spriegumu atbilstoši jūsu vajadzībām. DIY projektam man vajadzēja stabilizētu spriegumu tieši 7V dc un aptuveni 100 mA. Aplūkojot savu detaļu kolekciju, es atklāju, ka
Datora barošanas avota pārveidošana par mainīga augstākā līmeņa laboratorijas barošanas avotu: 3 soļi
Datoru barošanas avota pārveidošana par mainīga stenda laboratorijas barošanas avotu: šodien laboratorijas barošanas avota cenas pārsniedz 180 USD. Bet izrādās, ka novecojis datora barošanas avots ir ideāls darbam. Tas maksā tikai 25 USD, un tiem ir aizsardzība pret īssavienojumu, termisko aizsardzību, aizsardzību pret pārslodzi un
Vēl viens barošanas avots no datora barošanas avota: 7 soļi
Vēl viens barošanas avots no datora barošanas avota: šī pamācība parādīs to, kā es uzbūvēju strāvas padevi uz galda, izmantojot vecā datora barošanas bloku. Šis ir ļoti labs projekts vairāku iemeslu dēļ:- Šī lieta ir ļoti noderīga ikvienam, kas strādā ar elektroniku. Tas nozīmē