# ATMEL mikrokontrolleri >  Projekti izmantojot ADC

## Sviests

Sveiki! Esmu svaigs elektronikas fanāts, kādu laiku jau ņemos ar mikrokontrolieriem, pats taisu visu izmantojot USB ASP Latmatic programmatoru un Atmega16a mikrokontrolieri, un eksperimentēju uz Breadboard'a ar pogām, diodēm, LCD 16x2 displeju un vēl šo to.

Esmu puslīdz apguvis darbības ar bitiem, taimerus, interruptus, un tagad esmu ķēries pie ADC.

Tagad ļoti gribētos sākt darboties ar sensoriem. Uztaisīt kādu termomentru, akselometru. Pamēģināt sensora sprieguma izmaiņas attēlot uz displeja. Pašam tas ir izdevies ar potenciometru, izmantojot, kā sprieguma dalītāju.

Tāpēc gribēju jautāt, kur vislabāk (lētāk un piemērotāk) meklēt sensorus priekš projektiem, lai mērijumus izvadītu uz displeja?
 Vai visiem sensoriem darbības princips ir līdzīgs kā potenciometram, tādā ziņā, ka ir 3 izvadi ( + kontakts, - kontakts un kontakts, uz kura mainās spriegumus attiecībā pret zemi?
Varbūt kāds var ieteikt vēl kādas interesantas idejas projektam, no kura varētu šo to noderīgu apgūt?

----------


## M_J

Sensori ir daudz un dažādu veidu. Ja gribi tādu, kas darbojas līdzīgi kā potenciometrs, pirmais, kas nāk prātā ir spiediena (retinājuma) devēji, piemēram auto ieplūdes kolektorā. Termometri ir savādāki. Var jau būt, ka ir arī tādi, kuriem izejā lineāri mainās spriegums atkarībā no temperatūras, līdzīgi kā potenciometram, bet tie noteikti nav pliki sensori. Tur tad jau ir iekšā vairāk vai mazāk sarežģīta shēmiņa. Vienkāršākajā gadījumā temperatūras sensoriem atkarībā no temperatūras mainās pretestība. Ja saslēdz virknē termistoru ar apmēram tikpat lielu pastāvīgo rezistoru, šīs virknītes vienu galu pieslēdz pie masas, otru galu pie +5V, viduspunktā spriegums mainīsies atkarībā no temperatūras. Iegūsi kaut ko līdzīgu potenciometram, no spriegunma varēsi izrēķināt temperatūru. Var ieiet tepat veikala sadaļā, vai Argusa lapā, ierakstīt meklētājā NTC, apskatīties raksturlīknes, izvēlēties kādu no termistoriem un taisīt augšā termometru. Tas varētu būt lētākais variants. Ja gribās kaut ko precīzāku, bet dārgāku, var ierakstīt meklētājā PT100 - tie ir temperatūras devēji, kas tiek izmantoti rūpnieciskajās iekārtās. Ja gribās mērīt augstas temperatūras, tad vajag termopāri. Tam pašam izejā ir spriegums, bet mērījuma apstrāde ir sarežģītāka.

----------


## Sviests

Paldies! 

Samērā vienkārša, lēta un interesanta ideja liekas termistors virknē ar rezistoru, veidojot sprieguma dalītāju! Pēc tam aprēķināt sprieguma maiņas atkarību no pretestības (temperatūras) un izvadīt rezultātus uz displeja. Tiešām labs variants. To arī noteikti jāpamēģina.

Tik pat labi, varbūt var mēģināt ar kādu fotorezistoru to pašu izdarīt! 

Super, prieks par idejām!  ::

----------


## Powerons

Vēl ir laba ideja izmantot UART ar vienu max232 (RS232) mikreni atmeli var pieslēgt pie datora un mērījumus attēlot uz datora un kolekcionēt datus datubāzē.

Viens no variantiem ir izmantot industruiālo Modbus datu apmaiņas protokolu un pieslēgt SCADA HMI sistēmu, kas savāks tavus mērījumus Temperatūras un visu citu. Es šobrīd lietoju ScadaBR

Ja ir interese varu iedot modbusa protokola draiveri priekš atmega, viss modbus tikai vienā failā un vienkārši palaižams.
Tā kā pašam datu apmaiņa ar datoru nav jāprogrammmē

----------


## Powerons

No termometriem man liekas sākumā priekš ADC labs ir lm35dz
Viņš mēra 0-100C grādiem uz izdod 0-1V var slēgt patiešo pie atmeļa bet neizmantojās pilna ADC skala
bet labāk papildus pielikt vienu opampu, piemēram LM358 un divas pretestības, kas pareizinās 1Voltu ar 2.5 un tad būs pilna ADC skala, kas mēra ar precizitāti viens cipars aiz komata. Izmantojot atmeļa iekšējo references spriegumu.

----------


## M_J

Mūžu dzīvo - mūžu mācies, izrādās, ka ir tāds lm35dz. Pa ausu galam biju par tādu dzirdējis, bet nebiju īpaši interesējies. Interesanti, automobiļos motora vadībās joprojām lieto NTC, rūpnieciskajā elektronikā PT100. Par MODBUS - ko tieši Tu lieto priekš ATMEGAs? Par Atmeļa ADC - pirmo versiju platjoslas zondes kontrolierim arī uztaisīju, izmantojot Atmel iekšējo referenci. Likās visnotaļ sakarīgs spriegums 2.56V. Ja jau uzrādīta tāda vērtība likās loģiski, ka iekšējās references precizitāte ir kaut kur 0.01V, varbūt 0.02V vai 0.05V. Bet tad ienāca prātā tomēr apskatīties datašītu, biju šausmās, kasīju pušu celiņus un lipināju klāt ārējo referenci.

----------


## australia

Nu, ja tīri ADC gribas patestēt, tad var pačakarēties ar temperatūru. bet visādi citādi temperatūrai es izmantotu DS18B20.
Voltmetru droši vien jau uztaisīji?

----------


## M_J

Jautājums Poweronam, kāpēc tieši ScadaBR? Vai esi testējis arī citas pieejamās SCADAs? Ko vari teikt par tām?

----------


## Powerons

Par modbus es lietoju SimplyModbusAVR, pagaidām ir suportēti tikai 16bitu ieejas reģistru lasīšana, bet ar to vien arī daudz ko var izdarīt.
Modbus ietilpst tikai vienā failā un ir elementārs priekš palaišanas, atmeļiem ar vienu UART

 Piemērs:

#include "SimplyModbusAVR.c"

int main(void) 
{
   ModbusAdress=0x01;
   // Start modbus
   InitModbus(UBRR_VAL);
   // UBRR_VAL - speed

   //Input registers values
   Modbus3[0] = 10;
   Modbus3[1] = 11;
   Modbus3[2] = 12;
   Modbus3[3] = 13;

          while (1)   {     }
}

Modbus testam laba programma QModbus.


Par SCADA kādreiz mēģināju OpenScada uz Linux, bet tā bija visai sarežģita, Priekš projektiem kādreiz lietoju komerciālo Fanuc Cimplicity,
Tagad eksperimentiem iekš Sourceforge.net sameklēju ko polulārāku, un tā izrādijās ScadaBR, Vismaz komunikāciju daļa izskatās sakarīga.
Tādu patiešām labu brīvo skadu pagaidām neesmu atradis  ::  bet ScadaBR jaunā demo HMI daļa, kas ir taisīta iekš Adome flash izskatās daudzsološa

----------


## next

Ar ADC jau katrs muljkjis uztaisiis  :: 
Man domaat interesantaak parunaat par to kaa ciparot analogo signaalu kad kontrolierii adc modulja nav (piemeeram es savulaik uztaisiiju MIDI pulti ar pic16f84).
Vai teiksim kaa iztikt bez speciaaliem deveejiem.
 Temperatuuru ikdienas vajadziibaam tak var nomeeriit ar jebkuru diodi.
Un apgaismojumu var noveerteet ar to pashu LEDu kas paareejaa laikaa iekaartas darba rezhiimu indicee.
Ar kontrolieriem tas vienkaarshi izdaraams.

----------


## Sviests

Nu jā, nekas pārāk grūts tas nebija.

Vienīgais vajadzēja izmantot divas formulas. 
1) R1 = ((V_in*R2)/(V_out))-R2;
R1 ir termorezistors, kuram mainās pretestība atkarībā no temperatūras
R2 - Otrs rezistors virknē
V_in - Ieejas spriegums
V_out - Spriegums uz sprieguma dalītāja

2)Temp = (B * Tn) /( B + log((R1/R2))*Tn)
B - Termorezistora konstante
Tn - Nominālā temperatūra (298.15)

https://www.youtube.com/watch?v=2tuZVqgU2gs


Jāpamēģina  būs uzbūvēt voltmetrs. Teiksim lai varētu līdz 20v mērīt! Paziņa lūdza  uztaisīt savai automašīnai. Vieglāk, protams, būtu nopirkt gatavu, bet  jāizmanto iespēja pašam kaut ko citiem noderīgu uztaisīt  :: 

Pie reizes gribēju pajautāt, kur vislētāk/ērtāk(ātrāk) dabūt ļoti vienkāršus servo motoriņus?

----------


## ezis666

Teikšu kā i, ampērmetrs un voltmetrs autiņā ir ērtāks analogais, uzreiz redzi vai viss ok, cipari ir grūti saprotami, īpaši, ja sarežģīta braukšana, pats esmu pārbaudījis.

----------


## Obsis

Par termomēteriem labāk iečeko datašitu no ADS1234. Nenožēlosi. LM tur pat tuvumā nav saredzams. Turklāt tas lieliski sakomponējas ar jebkādu proci, piemēram trīsdolāru Leonardo.
Tiesa, lai nešautu pa zvirbuļiem ar lielgabalu, ADS ir jūtami dārgāks par LM.

----------


## Obsis

RE:""Pie reizes gribēju pajautāt, kur vislētāk/ērtāk(ātrāk) dabūt ļoti vienkāršus servo motoriņus?""
Man nule šo jautājumu uzdeva astronomi, kam tie spoguļi jāgroza. Absolūts price-effectiveness vinnētājs ir ebay ar meklējumfrāzi CNC stepper motor+driver+PC interface/ complect.
Par 150 USD vari dabūt interfeisus kopā ar 4 gab 3,5 Amp labiem un spēcīgiem soļu dzinējiem. Alternatīvi mazliet niknāki soļinieki viens gab maksās to pašu, bet vadības plate atsevišķi, pusi no tā. Pērc CNC komplektu un liekos motorus vienkārši iesāli nebaltai dienai. Cita starpā, astronomi tā izdarīja, un nesaku neko, ka nevar no šiem atpirkt kādu motorīti (bet drivaks ir monolīts un nedalāms, tā ka nav nekāda finansiāla ieguvuma pirkt motoru atsevišķi).
Jaudīgākiem motoriem, kā lielmēra CNC, motoru vada stepper motor driver (pēc būtības būsteris), un šos būsterus konnektē pie PC LPT vadības plates (CNC stepper motor 4-axis driver). Varianti 3-axis, 5-axis plate. Savukārt piepērkot pāris USD vērto LPT to USB converter nebūs jāmeklē tik arhaisks kompis, kas ir apgādāts ar šo dinozauru laikmeta standartu. 
Piemēri:
http://www.ebay.com/itm/CNC-drilling...:X:RTQ:US:1123
un
http://cgi.ebay.com/ws/eBayISAPI.dll...:X:AAQ:US:1123
bet puslidz adekvāts baroklis vienam motoram 
http://www.ebay.com/itm/231044264737
un perehodņikam
http://www.ebay.com/itm/New-USB-1-1-to-DB25-Female-Port-Print-Converter-Cable-LPT-Black-hv2n-/251388575293?pt=AU_CablesConnectors&hash=item3a87ed3e3d

P.S. Ja tomēr esmu pārpratis jautājumu un Tev vajag vienkārši griezties, nevis griezties pa noteiktu leņķi, tad var skatīties motorus priekš DIY lidmodeļiem, piemēram Konrad.de internetveikalā (caur pastu) to ir plaša izvēle (klātienē vari apskatīt, ja būsi Minhenes centrā). Apmēram 20-100 Eur nosedz diapazonu no 10W līdz 500W, un tie ir ļoti apgriezienīgi motorīši, kā jau propellerim pienākas. Pa nieka 300 Eur tur var paņemt veselu 4-motoru mikrohelikopteri, kas spēj uzraut gaisā 2kg fotokameru. Taisni demonstrēja veikalā ar varenu ļembastu, kad pēdējoreiz tur grozījos. Lielā spiegšana sākās, kad pārdevējs mazliet nokļūdījās un piezemēja heli uz kādas dāmītes suņabērna, kas dikten tiecās helim iekost. Ciets izrādījās.

----------


## ezis666

Konrāds ir viena no dārgākajām vācu bodēm  ::

----------

