AtMega328P - usarlo senza arduino

Salve!

Prima di leggere, dovreste leggere il mio ultimo topic.
Sulla PCB dovrei saldare un ATmega328P. So che dovrei prima caricarci il bootloader tramite Arduino IDE, poi potrò programmarlo. So che ha al suo interno un cristallo da 8MHz, ma se si vuole una frequenza maggiore si deve collegarne uno da 16MHz tra i due appositi pin e due condensatori da 22pF.

Questa è la guida che sto seguendo:
Guida
Questo è il mio progetto:
Progetto

Io dovrò usare un HC-05, un DHT11, un fotoresistore e due relè per comandare due ventole.
Sia corretta la mia conoscenza circa la presenza dell'oscillatore da 8MHz, mi basterebbe solo quello?
Consigli da darmi a riguardo?

Secondo me non hai bisogno di andare a 16Mhz, ti bastano gli 8. Non mi pare hai un progetto cha ha criticità sulla velocità.

Quindi basta che collego il VCC e il GND correttamente e le componenti correttamente ai pin digitali (la resistenza a A5)?

Basta così, giusto?

Riguardo il caricamento del bootloader e del programma? basta collegare correttamente TX e RX (TX di arduino a RX del ATMEGA e viceversa) e ovviamente VCC e GND dell'ATMEGA?

Nel tuo thread precedente parli solo di incisione pcb. Al tuo progetto in realtà c'e' solo del codice, da quello dovremmo capire cosa vuoi fare ? Sarebbe utile ci dessi un pò di info in più.

Comunque... il convertitore seriale serve per avere la usb come su una Uno o una Nano, ma il 328P deve avere già dentro il bootloader. Se non c'e' devi caricarlo attraverso connessione/connettore ISP.
Inoltre attraverso ISP/ICSP devi anche settare i FUSE se il chip ti viene venduto "nudo" e vuoi usare cristallo e i 16Mhz (cioè non usando il default di fabbrica, 1 o 8 mhz interni)
Ora, se tu il bootloader lo carichi prima okay, ma parli di saldarlo. E se perde il bootloader ? come lo ricarichi ? Puoi pensare di "esporre" i pin ISP (connettore 6x2) per eventualmente ripristinare bootloader.

Per il pcb, un atmega nudo, di solito ci va un condensatore tra VCC e GND a meno che la 5V sia STABILE.
Quando togli il convertitore USB (che ha un chip regolatore di tensione) come alimenti il 328P ? Fonte pulita ?

Direi che mancano molte info, da solo lo sketch non si capisce tutto.

Ok allora. Innanzitutto sempre sul mio profilo di gitHub si trova l'applicazione che comunica col modulo HC-05
Applicazione Android

Questo progetto consiste in una serra totalmente automatizzata.

Dimensione: 200200300 mm - plexiglass
In base ai calcoli, ho stimato 12v e 2/3A

Dall'applicazione io posso mandare i range della temperatura, umidità e luce ideali alla crescita della pianta all'interno della serra. Questi valori sono scritti nella EEPROM una volta che l'HC riceve .
Una volta riavviato il sistema, l'AtMega leggerà questi valori. Essi saranno messi a confronto con i dati letti dall'HC-05.

Se il DHT11 legge una temperatura inferiore, quindi la serra va riscaldata, il sistema fa passare corrente solo nel primo relè il quale è collegato a una piccola resistenza elettrica e a una ventola.
Se esso legge una temperatura maggiore invece dovrà far passare corrente al secondo relè che farà avviare solo le due ventole (senza la resistenza - qui poi dovrò "giocare" con i diodi al fine di attivare col primo relè solo la resistenza e la prima ventola, col secondo relè solo le ventole).
Stessa cosa per l'umidità, mi manca di acquistare ancora una pompa.

Riguardo la luce non voglio interferire, se è notte non si deve attivare alcun led o cose del genere

A dire il vero mi è stato consigliato di utilizzare una millefori, ma io vorrei fare qualcosa di più carino come una PCB (anche per complicarmi la vita e per fare una nuova esperienza).

Ora sono bloccato all'organizzazione dell'ATMega. Vorrei sapere come muovermi...

Se non c'e' devi caricarlo attraverso connessione/connettore ISP.

Dal tutorial che ho citato sopra, mostrava come utilizzare la scheda Arduino e l'IDE attraverso l'opzione Burn Bootloader

chip ti viene venduto "nudo"

Suppongo tu intenda senza socket? Infatti punto a comprarne uno At con il socket(quel pezzo su cui si appoggia l'At). Se il venditore non fa scherzi poi...

Per il pcb, un atmega nudo, di solito ci va un condensatore tra VCC e GND a meno che la 5V sia STABILE.
Quando togli il convertitore USB (che ha un chip regolatore di tensione) come alimenti il 328P ? Fonte pulita ?

No. Con un un trasformatore AC/AC, un ponte raddrizzatore e condensatori, induttori e una 10k

Sorry, per nudo intendevo che esce di fabbrica senza bootloader e senza che abbiano toccato i fuse.
Secondo me ti bastano gli 8Mhz. Ottimo avere lo dip socket, saldarlo fisso non ha senso.

Per l'alimentazione... passo la parola agli elettronici professionisti (io sono un programmatore).
Comunque non ho capito. Da 220V AC a 12V DC, ma come porti a 5V per i sensori ?

Per il PCB, io consiglio prima di fare delle prove su breadboard. Le stai facendo ?

Sorry, per nudo intendevo che esce di fabbrica senza bootloader e senza che abbiano toccato i fuse.

Chiedo venia per la mia ignoranza ma sono abbastanza nuovo in materia. Il bootloader so cos'è, ma non posso dire lo stesso del fuse. Cosa sarebbe, a cosa serve e come posso procurarlo all'AtMega?

Da 220V AC a 12V DC, ma come porti a 5V per i sensori ?

No scusami. La foto che ti ho mandato sarebbe l'alimentazione "generale", siccome alla resistenza ho intenzione di fare passare 12v. Poi andrò ad abbassare la tensione quando la porto ai sensori.

Quindi ricapitolando:
Se non trovo quello col bootloader dovrò metterlo io tramite IDE, in realtà vorrei metterlo io (imparare qualcosa di nuovo :)). Poi devo sistemare i fuse(ti sarei grato se rispondessi alla domanda precedente a riguardo) e dopo saldo lo zoccolo e metto il Mega

Per il PCB, io consiglio prima di fare delle prove su breadboard. Le stai facendo ?

Sisì. Da due settimane e passa. Proprio ieri ho finito.
Ovviamente la resistenza e le due ventole le ho simulate con i LED

I fuse sono dei registri interni alla MCU, alcuni li devi settare se usi oscillatore esterno:
https://www.leonardomiliani.com/it/2013/i-bit-fuse/

Il bootloader e i fuse li puoi settare sul MCU usando avrdude oppure avrdudess (interfaccia grafica).
avrdude è programma a linea di comando richiamato da Arduino IDE

Veramente grazie!
Ebbene non credo di aver bisogno dell'oscillatore esterno, dunque non devo attivare nessun fuse? O comunque alcuni sì?

Ma perché non vi studiate i datasheet prima di fare le cose ? ? ? :o :o :o

I chip vergini arrivano con programmato il clock interno e, se si cambiano i FUSE e si attiva il clock con il quarzo, da quel momento è necessario, ovviamente, il quarzo esterno o .. non ci si parla più.

Il valore di default dei FUSE relativi al clock, per un chip vergine, è: CKDIV8 attivo (0), CKSEL0, CKSEL2 e CKSEL3 attivi (0) e CKSEL1 disattivo (1) quindi ... oscillatore interno a 8MHz con divisore per 8 attivo quindi, quando li si compra sono programmati per ... clock interno ad 1 MHz.

Per modifiche sui FUSE è obbligatorio un programmatore ISP. Errata programmazione dei fuse può portare al blocco completo del chip per cui poi occorre un altro particolare programmatore, HV, per azzerarli e ripristinare il funzionamento del chip, quindi ... occhio a cosa si tocca.

Guglielmo

Con lo schema dell'alimentatore postato arrivi a 1A scarso di corrente in uscita.
Per aumentare la corrente devi aggiungere un transistor.

R1 mettila da circa 10 ohm mentre per TR1 un un PNP MJ2955 o simili.

Ma perché non vi studiate i datasheet prima di fare le cose ? ? ? :o :o :o

Sorry, è che non ho l'abitudine di leggere i datasheet. Se lo sapesse il mio professore... :o.
La prossima volta mi faccio prima un giro sul ds. E grazie per la critica costruttiva! :slight_smile:

R1 mettila da circa 10 ohm mentre per TR1 un un PNP MJ2955 o simili.

Ok, grazie anche a te!

I fuse (fusibili, tradotto letteralmente) sono delle impostazioni di base del microcontrollore. Credo che il nome derivi da impostazioni che in origine venivano effettuate bruciando delle giunzioni in una memoria ROM all'interno del chip. Oggi tali impostazioni sono modificabili, ma non è possibile farlo per errore durante il caricamento del codice.

Per quanto riguarda l'alimentazione:

  1. almeno un condensatore da 100nF è richiesto vicino ai pin uscita e massa del regolatore, come da datasheet, per garantirne la stabilità. E' anche richiesto per il corretto funzionamento del microcontrollore: una volta, essondomi dimenticato di mettere il condensatore in un circuitino con un attiny alimentato da un elemento al litio, non riuscivo in alcun modo a programmarlo! Ai tempi dei TTL, era di regola mettere un condensatore ceramico da 100nF molto vicino a ciascun integrato. Non fare mai economia: metti un condensatore elettrolitico abbastanza capiente all'ingresso del regolatore, con 100nF in parallelo nelle immediate vicinanze, un altro 100nF vicino all'uscita e un elettrolitico da 10...47uF in parallelo; poi, 100nF vicino al microcontrollore.

  2. Esistono modelli di 78xx nel classico contenitore TO220 che arrivano fino a 1,5A, per correnti superiori, se non vuoi usare gli obsoleti e costosi regolatori serie 78Hxx da 5A, puoi usare un circuito simile a quello pubblicato da Arco_500, ma con l'aggiunta di un diodo e due resistenze per ripartire adeguatamente la corrente fra il transistor e l'integrato e sfruttare la protezione in corrente e termica dell'integrato moltiplicata per il rapporto delle resistenze più uno. Il circuito pubblicato, viceversa, non è protetto da sovraccarichi e cortocircuiti.
    Il diodo in serie ha due funzioni:
    a. montato vicino al transistor, lo segue termicamente mantenendo costante il rapporto di corrente al variare della sua temperatura;
    b. semplifica il calcolo del rapporto delle correnti, rendendolo semplicemente inversamente proporzionale al rapporto delle resistenze.
    Molti, purtroppo, non se ne rendono conto e preferiscono risparmiare un diodo e una resistenza, perdendo le protezioni offerte dall'integrato e facendo dissipare potenza solo al transistor, mentre il regolatore lavora quasi senza carico... :frowning:
    Nel circuito sopra, con R1 da 10 ohm il transistor entra in conduzione non appena scorrono 60mA nel regolatore.

In effetti io sapevo proprio che si usava mettere anche transistor e regolatore sullo stesso dissipatore

Esattamente per le ragioni elencate da Datman

Vedo che, stranamente, gli schemi applicativi presenti nei datasheet degli ultimi 25 anni riportano solo la resistenza in serie all'ingresso del regolatore, senza il diodo né la resistenza sull'emettitore che erano riportati, invece, su vecchi databook del '78 che mi furono regalati molti anni fa e che mi sono rimasti stampati nella memoria. Senza la resistenza sull'emettitore, la potenza dissipata non viene ripartita proporzionalmente fra il transistor e il regolatore, ma con una certa corrente in uscita il transistor entra in funzione impedendo che aumenti la dissipazione del regolatore.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.