Sa tutorial na ito ay bubuo kami ng isang mapagkukunang 5V variable boltahe mula sa Arduino Uno. Para doon gagamitin namin ang tampok na ADC (Analog sa Digital Conversion) at PWM (Pulse Width Modulation) na tampok.
Ang ilang mga digital electronic module tulad ng accelerometer ay gumagana sa boltahe 3.3V at ilang gumagana sa 2.2V. Ang ilan ay nagtatrabaho pa sa mas mababang mga boltahe. Sa pamamagitan nito hindi kami makakakuha ng isang regulator para sa bawat isa sa kanila. Kaya dito gagawa kami ng isang simpleng circuit na magbibigay ng isang output ng boltahe mula 0-5 volts sa isang resolusyon na 0.05V. Kaya sa pamamagitan nito maaari kaming magbigay ng tumpak na mga boltahe para sa iba pang mga module.
Ang circuit na ito ay maaaring magbigay ng mga alon hanggang sa 100mA, kaya maaari naming gamitin ang power unit na ito para sa karamihan ng mga module ng sensor nang walang anumang problema. Ang output ng circuit na ito ay maaari ding magamit upang singilin ang mga bateryang rechargeable ng AA o AAA. Gamit ang display sa lugar madali naming makikita ang mga pagbabagu-bago ng kuryente sa system. Naglalaman ang variable unit ng power supply na ito ng interface ng pindutan para sa voltage program. Ang pagtatrabaho at circuit ay ipinaliwanag sa ibaba.
Hardware: Arduino Uno, Power supply (5v), 100uF capacitor (2 piraso), pindutan (2 piraso), 1KΩ risistor (3 piraso), 16 * 2 character LCD, 2N2222 transistor.
Software: Atmel studio 6.2 o AURDINO gabi-gabi.
Circuit Diagram at Paggawa ng Paliwanag
Ang circuit para sa variable na yunit ng boltahe na gumagamit ng arduino ay ipinapakita sa ibaba diagram.
Ang boltahe sa output ay hindi ganap na linear; magiging maingay ito. Upang ma-filter ang mga capacitor ng ingay ay inilalagay sa mga output terminal tulad ng ipinakita sa pigura. Ang dalawang mga pindutan dito ay para sa pagtaas ng boltahe at pagbawas. Ipinapakita ng display unit ang boltahe sa mga OUTPUT terminal.
Bago pumunta para sa pagtatrabaho kailangan nating tingnan ang mga tampok ng ADC at PWM ng Arduino UNO.
Dito kukuha kami ng boltahe na ibinigay sa OUTPUT terminal at pakainin ito sa isa sa mga ADC channel ng Arduino. Pagkatapos ng conversion ay kukuha kami ng halagang DIGITAL na iyon at maiuugnay namin ito sa boltahe at ipapakita ang resulta sa 16 * 2 na display. Ang halagang ipinapakita ay kumakatawan sa variable na halaga ng boltahe.
Ang ARDUINO ay may anim na mga channel ng ADC, tulad ng ipinakita sa pigura. Sa mga alinman sa isa o lahat sa kanila ay maaaring magamit bilang mga input para sa analog boltahe. Ang UNO ADC ay may resolusyon na 10 bit (kaya ang mga halaga ng integer mula sa (0- (2 ^ 10) 1023)). Nangangahulugan ito na mapapa-input ang mga voltages ng pag-input sa pagitan ng 0 at 5 volts sa mga halaga ng integer sa pagitan ng 0 at 1023. Kaya't para sa bawat (5/1024 = 4.9mV) bawat yunit.
Dito ay gagamitin namin ang A0 ng UNO.
|
Una sa lahat ang mga UNO ADC channel ay may default na sanggunian na halaga ng 5V. Nangangahulugan ito na maaari kaming magbigay ng isang maximum na boltahe ng pag-input ng 5V para sa pag-convert ng ADC sa anumang input channel. Dahil ang ilang mga sensor ay nagbibigay ng mga voltages mula sa 0-2.5V, na may isang sanggunian na 5V nakakakuha kami ng mas kaunting kawastuhan, kaya mayroon kaming isang tagubilin na nagbibigay-daan sa amin na baguhin ang halagang ito ng sanggunian. Kaya para sa pagbabago ng sangguniang halaga na mayroon kami ("analogReferensi ();") Sa ngayon ay iniiwan namin ito bilang.
Bilang default nakukuha namin ang maximum na resolusyon ng board ng ADC na 10bits, ang resolusyon na ito ay maaaring mabago sa pamamagitan ng paggamit ng tagubilin ("analogReadResolution (bits);"). Ang pagbabago ng resolusyon na ito ay maaaring maging madaling gamiting para sa ilang mga kaso. Sa ngayon iniiwan namin ito bilang.
Ngayon kung ang mga kundisyon sa itaas ay nakatakda sa default, mababasa natin ang halaga mula sa ADC ng channel '0' sa pamamagitan ng direktang pagtawag sa pagpapaandar na "analogRead (pin);", narito ang "pin" ay kumakatawan sa pin kung saan namin ikinonekta ang analog signal, sa kasong ito ay magiging "A0".
Ang halaga mula sa ADC ay maaaring makuha sa isang integer bilang "float VOLTAGEVALUE = analogRead (A0); ", Sa pamamagitan ng tagubiling ito ang halaga pagkatapos maimbak ang ADC sa integer na" VOLTAGEVALUE ".
Ang PWM ng UNO ay maaaring makamit sa anumang mga pin na sinasagisag bilang "~" sa board ng PCB. Mayroong anim na mga channel ng PWM sa UNO. Gagamitin namin ang PIN3 para sa aming hangarin.
analogWrite (3, VALUE); |
Mula sa kundisyon sa itaas maaari naming direktang makuha ang signal ng PWM sa kaukulang pin. Ang unang parameter sa mga braket ay para sa pagpili ng pin na numero ng PWM signal. Pangalawang parameter ay para sa pagsulat ng ratio ng tungkulin.
Ang halaga ng PWM ng UNO ay maaaring mabago mula 0 hanggang 255. Sa pamamagitan ng "0" bilang pinakamababa sa "255" bilang pinakamataas. Sa 255 bilang duty ratio makakakuha kami ng 5V sa PIN3. Kung ang duty ratio ay ibinigay bilang 125 makakakuha kami ng 2.5V sa PIN3
Tulad ng sinabi kanina may dalawang mga pindutan na konektado sa PIN4 at PIN5 ng UNO. Sa pagpindot, tataas ang halaga ng duty ratio ng PWM. Kapag ang iba pang pindutan ay pinindot ang halaga ng ratio ng tungkulin na PWM ay bumababa. Kaya't iba-iba namin ang ratio ng tungkulin ng PWM signal sa PIN3.
Ang signal na PWM na ito sa PIN3 ay ibinibigay sa base ng NPN transistor. Ang transistor na ito ay nagbibigay ng isang variable na boltahe sa emitter nito, habang kumikilos bilang isang aparato ng paglipat.
Sa variable duty duty PWM sa base magkakaroon ng variable boltahe sa emitter output. Sa pamamagitan nito mayroon kaming isang variable na mapagkukunan ng boltahe sa kamay.
Ang output ng boltahe ay feed sa UNO ADC, para makita ng gumagamit ang output ng boltahe.