Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Usare PIC

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

2
voti

[1] Usare PIC

Messaggioda Foto Utentezacarov » 26 ott 2013, 20:24

Salve a tutti:
sono rimasto affascinato da questo componente e dalle sue potenzialità, che ho incominciato a conoscerlo e dopo varie ricerche e tentativi, con un po di nozioni prese, qua e la, sono riuscito a creare il mio primo programmino ino ino, con un PIC 16f628a, ora vorrei collegare sul pin in ingresso una fotoresistenza che quando buio attivi un transistor e accenda una lampada, per spegnerla al chiarore,
ho provato e riprovato ma non riesco a portare il 5 volt, livello alto sul pin di ingresso, prelevando i volt dal partitore resistenza fotoresistenza,ovvero fintanto che rimane buio calibro il trimmer per avere livello alto sul pin quando sale la lumnosità sulla foresistenza si abbassa la tensione solo di pochi millivolt non sufficienti a portare a livello basso il pin di entrata.
qualche esperto può indicarmi cosa sbaglio
grazie
Avatar utente
Foto Utentezacarov
30 3
 
Messaggi: 40
Iscritto il: 2 lug 2013, 11:36

6
voti

[2] Re: usare PIC

Messaggioda Foto UtentePaolino » 27 ott 2013, 9:11

Ciao Foto Utentezacarov.
Vediamo se ho capito bene cosa intendi dire.

La curva caratteristica di una fotoresistenza (LDR) è qualitativamente la seguente:



Cià significa che avendo una variazione dai Megaohm agli ohm, potresti pensare di utilizzare il sensore come interruttore digitale, collegandolo il questo modo ad una porta del microcontrollore:



In questo modo avresti una risposta di tipo 0-1 sulla soglia di superamento della tensione di ON del micro. Il comportamento sulla transizione buio-luce e luce-buio devi verificarlo sul campo.

In alternativa potresti pensare di impiegare un microcontrollore con un ingresso analogico. Questo forse ti permetterebbe di migliorare e di molto il comportamento del sistema.

Lo schema di collegamento potrebbe essere ancora il partitore:


L'andamento, ancora una volta qualitativo della tensione Vpar è il seguente:



Potresti ad esempio fissare alcune soglie di tensione e per ciascuna di queste operare, con un ciclo di isteresi, una azione diversa. In questo disegno ho ipotizzato 3 livelli di tensione:



Il PIC16F628A purtroppo non dispone di ingressi A/D ma solo di comparatori, dovresti pertanto passare ad altro PIC.

Saluti.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

1
voti

[3] Re: usare PIC

Messaggioda Foto Utentezacarov » 6 nov 2013, 12:23

I tempi delle mie risposte purtroppo problemi di conessione (chiavetta) sono un po lunghi, ma grazie infinite PAOLINO per il tuo tempo e disponibilità, ho adottato la prima soluzione tarando buio su 5.01volt e pertanto avrei risolto il problema anche se artigianale e non raffinato come il tuo ma sai un passo alla volta, contento ho dato tensione e qui il nodo.
il linguaggio per scriverli: un problema! poi dopo varie prove e prove testi sfogliati nozioni dalla rete ecc. sono approdato al basic in quanto infarinato dal famoso commodore 64 che aveva il visual basic
ora ho scritto il mio diciamo 1 listato, con un 16f628A vorrei comandare una serie di elettrovalvole per il mio orto sul balcone di casa, leggo tramite fotoresistenza la luce,come mi hai suggerito,leggo lo stato del terreno,con sensore umidita,umido stato 0 secco stato 1, leggo se piove,stato 0 non piove stato 1, ognuno su portab in, restituisce azione attivo e temporizzo le valvole.
assemblato e programmato il tutto 1 prova, quando alimento il circuito e PIC incomicia ad attivare le valvole senza leggere alcun comando, anche se stacco i sensori lui fa il suo ciclo; e questo il mio cruccio che non riesco a risolvere nonostante abbia + volte verificato il listato, forse proprio per questo sono oramai assuefatto dalla routine, non riesco a identificare l'anomalia, ti domando un tuo parere se hai un po di tempo e conoscenza del basic, di seguito posto il listato che ho prodotto per lo schema non so come postarlo

il listato:

Codice: Seleziona tutto
Include p16f628A
                                                                                   '
' dichiarazioni variabili
dim stato as byte
dim k as byte

main:
portb=0
trisb=%000000111         'rb 8-7-6-5-4-3- out 2-1-0 in
                'azzera porta b
while true
Delay_ms(50)             ' Pausa per antirimbalzo
meteo:
if portb.2=1 then        ' Se piove
portb.7=1                ' Accende segnalzaione  led
end if
delay_ms (10000)          ' Attende 10''
if portb.2=0 then         ' se non piove prosegue
Portb.7=0
end if
goto meteo                 ' ricontrolla pioggia
'-----Processo 1 condizione ---------------------Luce/secco = 0
if (portb.0=0) and (portb.1=0) then
stato=1
end if
'------Processo 2 condizione------------------- Luce /Umido = 0
if (portb.0=0) and (portb.1=1) then
stato=2
end if
'-----Processo 3 condizione ---------------------Buio/umido =0
if (portb.0=1) and (portb.1=1) then
stato=3
end if
'------Processo 4 condizione--------------------Buio/Secco = 1
if (portb.0=1) and (portb.1=0) then
stato=4
end if
'======Processa le 4 condizioni===
select case stato
case 1                                     ' se si verifica il caso 1
portb.6=0                                  ' pompa /led spento
case 2                                     ' se si verifica il caso 2
portb.6=0                                  ' pompa/led spento
case 3                                     ' se si verifica caso 3
portb.6=0                                  ' pompa/led spento
case 4                                     'se si verifica caso 4
Portb.6=1                                  ' pompa/led acceso
for k =1 to 5 step 1                       ' conta 5 cicli incrementando dispari
delay_ms (30000)                           ' attende 30"x 5 cicli = 2,5'
next k
portb.6=0                                  ' porte messe a zero
for k =1 to 10 step 1                     ' conta 10 cicli incrementando pari
delay_ms (30000)                           ' attende 30" x 10 cicli = 5'
next k
end select                                 ' finisce la verifica dei casi
wend
goto main                                  ' ricomincia
end.
Ultima modifica di Foto UtentePaolino il 7 nov 2013, 22:09, modificato 1 volta in totale.
Motivazione: Racchiuso codice tra tag [code] e [/code]
Avatar utente
Foto Utentezacarov
30 3
 
Messaggi: 40
Iscritto il: 2 lug 2013, 11:36

0
voti

[4] Re: usare PIC

Messaggioda Foto UtenteDryden » 6 nov 2013, 13:55

Ciao, a parte il testo della tua ultima risposta che è di difficile comprensione, dal listato programmi in Mikrobasic.
Il tuo codice non funziona per varie ragioni:

Codice: Seleziona tutto
Include p16f628A   +++inutile+++
'
' dichiarazioni variabili
dim stato as byte
dim k as byte

main:
portb=0   +++'inverti questa istruzione con quella sotto+++
trisb=%000000111 'rb 8-7-6-5-4-3- out 2-1-0 in
'azzera porta b


while true

Delay_ms(50) ' Pausa per antirimbalzo  +++'inutile, l'antirimbalzo lo usi con pulsanti+++

meteo:

if portb.2=1 then ' Se piove
portb.7=1 ' Accende segnalzaione led
end if

delay_ms (10000) ' Attende 10''

if portb.2=0 then ' se non piove prosegue
Portb.7=0
end if

goto meteo ' ricontrolla pioggia  +++'incontrando questa istruzione NON condizionata, il programma ripartirà sempre dalla label METEO: saltando completamente il resto del programma+++



Il resto del codice non l'ho guardato bene in quanto le cose che ti ho segnalato sono la prima cosa da sistemare...
poi se posti uno schema e la config_word del PIC, sarebbe meglio.

Buona giornata
Avatar utente
Foto UtenteDryden
20 4
New entry
New entry
 
Messaggi: 97
Iscritto il: 1 gen 2011, 14:37
Località: Bolzano

0
voti

[5] Re: usare PIC

Messaggioda Foto Utentelelerelele » 6 nov 2013, 15:45

una prova da "praticone",

prova a collegare solo il resistore di pull'up (eliminando perciò il sensore) in questo modo dovresti avere il pin che va a livello alto, in caso rimanesse basso ho il dubbio che hai pasticciato con il programma, avendo lasciato il pin come uscita e non come ingresso.
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5505
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[6] Re: usare PIC

Messaggioda Foto Utentezacarov » 6 nov 2013, 17:19

Scusate se nel testo non sono stato chiaro, volevo dire che:
come principiante l'unico linguaggio che sono riuscito a masticare è il basic e dico linguaggio, non sintassi, prendo come oro colato tutti i consigli e vi ringrazio, appena riesco faccio le modifiche suggerite e posto il confi word che penso sia la configurazione del PIC in mikrobasic vorrei postare anche lo schema del circuito ma non so come fare :-) :-) :-) io sono come sono, il mondo corre avanti a me :-) :-) devo ingegnarmi un attimo,
Ah.. questi microcontrollori come affascinano ogni giorno sempre + per essere il primo in assoluto beh! non è male no?
vi ringrazio e sicuramente vi aggiorno appena riesco a riconettermi
Avatar utente
Foto Utentezacarov
30 3
 
Messaggi: 40
Iscritto il: 2 lug 2013, 11:36

1
voti

[7] Re: usare PIC

Messaggioda Foto UtentePaolino » 7 nov 2013, 22:25

Per disegnare gli schemi, utilizza FIDOCADJ. Qui trovi una guida.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[8] Re: usare PIC

Messaggioda Foto Utentezacarov » 13 nov 2013, 19:23

Salve a tutti.
eccomi dopo avere rivisto il sorgente ho provato e riprovato ma nulla il PIC non ha anima, sospeso momentaneamente le verifiche al mio sorgente,ricomincio dal primo mattone, ho copiato un semplicissimo sorgente per accendere un led, dando alimentazione al 16f628A sulla porta 0 dovrebbe accendersi il led...... :( nulla, probabilmente è questione di hardware ovvero il PIC, partiamo dal sorgente del led:

Codice: Seleziona tutto
program led
main:
     trisb.0=0 'Definisce il pin RB0 come Uscita
     portb.0=1 'Pone il pin RB0 a livello logico alto 1 (5V)
     end.


lo schema elettrico prevede alimentazione del PIC resitenza di pull-up su mclr e su porta rb0 un led con relativa resistenza, che si illumina appena arriva tensione al PIC semplice no; eh! nooooo! non funziona, che si debbano settare i flags prima di farlo compilare e scrivere sul PIC con clone di pckit2.6 io uso la config di default con mikrobasic che sono:
wdt_off spuntato
Lvp_off spuntato
hs_osc spuntato
tutti gli altri imangono vuoti
ma nulla forse vanno settati anche altri ?
beh! chi vuole partecipare,consigliare,implementare,aiutare, ecc.
grazie :D

EDIT c1b8: per cortesia utilizza il pulsante code in alto a sinistra per includere del codice che risulta altrimenti difficilmente leggibile.
Avatar utente
Foto Utentezacarov
30 3
 
Messaggi: 40
Iscritto il: 2 lug 2013, 11:36

0
voti

[9] Re: usare PIC

Messaggioda Foto Utentec1b8 » 13 nov 2013, 22:20

Un programma non può terminare con la end e basta... il PIC in quel caso si resetta e tutto ricomincia.
Devi creare un loop infinito dove il PIC si "perda"....
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[10] Re: usare PIC

Messaggioda Foto Utentezacarov » 14 nov 2013, 12:36

salve a tutti :D
ho risolto il problema del circuitino led proposto bisognava lavorare sui flags da settare in mikrobasic, posto di seguito la configurazione in modo che sia disponibile a chi serve, o settato in modo che funzioni il circuitino precedentemente posto all'attenzione e quindi per quello il caso è risolto.
Ora passo al mio codice e provo a rielaborare questi benedetti flags sperando di farlo rivivere, vedremo in seguito,
NB una volta creato la configurazione e rifatto la compilazione, in pckit2 va prima cancellato la PIC poi premuto il pulsante Blank ceck quindi caricato il file hex apparirà la configurazione salveta dei flags, quindi scritto il codice nel PIC, Questo è doveroso comunicarlo per quelli come me alle prime armi in fatto di PIC.
Allegati
Cattura2.JPG
config flags circuito led 2
Cattura2.JPG (28.06 KiB) Osservato 10287 volte
Cattura1.JPG
config flags circuito led 1
Cattura1.JPG (40.07 KiB) Osservato 10287 volte
Avatar utente
Foto Utentezacarov
30 3
 
Messaggi: 40
Iscritto il: 2 lug 2013, 11:36

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti