giochi di luce con Pic16f84

1)premessa ho sia il programmatore, sia i supporti, sia le Pic16f84

2) non so da dove partire

3) problema: voglio realizzare un semplice cicuitino x far lampeggiare 4 lampadine 12volt 5watt o in modalità Random o a coppie o uno x volta

4) chi mi aiuta?

--









Non visitare assolutamente questo sito...ih ih
http://it.geocities.com/lukeshop2004/
Reply to
Luca©
Loading thread data ...

ti serve anche un compilatore, devi scegliere il linguaggio di programmazione, assmbler o C. per fare quello che dici tu bastano poche istruzioni in assembler e ancora meno in C. in C basta ad esempio scrivere output_high(PIN_A1); che ti si accende la lampadina, e OUTPUT_LOW(PIN_A1); che ti si spegne la lampadina collegata all'uscita A1.

Per il circuito devi alimentare in PIC co 5V meglio se stabilizzati e creare lo stadio di oscillazione(anche una semplice rete rc senza quarzo). e devi collegare le tue 4 lampadine a 4 porte di I/O a tua scelta del pic(evitando la porte A4 che è opendrain e ha bisogno di pullup esternmo) attraverso 4 transistor NPN bel dimensionati per reggere le tue lampadine.

magari potresti mettere anche qualche pulsantino su qualcuna delle porte vuote in modo da cambiare i programmi di lampeggio o aumentare e diminuire la frequenza.

Reply to
emili

"Luca©" ha scritto nel messaggio news:fMjPd.28502$ snipped-for-privacy@twister2.libero.it...

proviamo a partire da qua:

formatting link
trovi il microcode studio, il compilatore, il manuale del picbasic e varie altre cose questo invece
formatting link
è un sito italiano dedicato ai pic

Reply to
dr. piripicchio

ok, assembler o c, ma x trasferirlo sul Pic non devo trasformarlo in linguaggio macchina?

a quanti Mhz? valri dell' RC

che cosa è?

5 -10 watt? qualche suggerimento?

questa cosa mi piace davvaero tanto! come intergisce il èulsante sulle porte vuote? cioè che succede nella Pic? commuta il programma?

Reply to
Luca©

"Luca©" ha scritto

vanno benissimo, ocio che se sempre accesi dovranno dissipare circa 0,2W e quindi e' normale che diventino roventi se lasciati senza aletta

ciao Claudio F

Reply to
Claudio F

bd 137

--

qualcosa di + adatto esiste? o quelli che ho scelto vanno già bene?

x quanto riguarda l'oscillatore a 4 mhz vanno bene resistenza da 25 ohm e condensatore da 10 nF?

Reply to
Luca©

"Luca©" ha scritto

entrambe le cose. se li hai gia' li puoi usare che tanto reggono 1,5A. volendo mettere qualcosa per correnti maggiori si potrebbero usare dei darlington come il comunissimo BDX53 che regge 8A ed ha il vantaggio di richiedere molta meno corrente sulla base (circa 1mA contro i 10..20 di un transistor normale), ma su di esso si perdono circa 2V contro i 0,5..1V di un transistor normale.

l'alternativa basso consumo + bassa caduta + basso riscaldamento e' data dai mosfet, un comune BUZ11 comandato a 5V direttamente dall'uscita del pic puo' condurre bene fino a 4A (poi occorrerebbe aumentare la tensione di pilotaggio del gate nel qual caso si puo'arrivare a 30A)

[FIDOCAD] MC 100 60 0 0 360 MC 75 70 0 0 045 MC 115 70 0 0 045 MC 60 60 0 0 300 MC 60 60 1 0 115 MC 100 60 1 0 115 MC 75 30 0 0 900 MC 115 30 0 0 900 MC 115 30 3 0 010 MC 75 30 3 0 010 LI 90 60 90 80 MC 150 70 0 0 045 LI 150 65 150 70 MC 150 30 0 0 900 LI 150 50 150 55 MC 150 30 3 0 010 LI 130 60 130 90 TY 58 67 5 3 0 0 0 * BD137 TY 99 68 5 3 0 0 0 * BDX53 TY 151 58 5 3 0 0 0 * BUZ11 TY 151 66 5 3 0 0 0 * s TY 151 50 5 3 0 0 0 * d MC 130 60 0 0 445 TY 129 55 5 3 0 0 0 * g LI 50 60 45 60 LI 130 90 45 90 LI 90 80 45 80 TY 21 69 5 3 0 0 0 * dal pic TY 75 20 5 3 0 0 0 * 12V TY 43 53 5 3 0 0 0 * 220 ohm TY 88 54 5 3 0 0 0 * 1,8k

Ho sempre usato un quarzo per l'oscillatore perche' cosi' sono sicuro della stabilita' e dei tempi di esecuzione delle istruzioni e non ci penso piu'. In ogni caso (vale anche per altri circuiti) sono valori troppo squilibrati verso la capacita', nel senso che benche' 25 ohm e 10nF possano dal punto di vista matematico fare lo stesso effetto di 250 ohm + 1nF o 2500 ohm + 100pF, dal punto di vista pratico 25 ohm sono pochissimi e i circuiti interni dell'oscillatore dovrebbero lavorare con correnti elevate. Infatti da quanto c'e' scritto sul datasheet la R deve essere compresa tra 5k e 100k. Una combinazione funzionante dovrebbe essere 5,6k e 22pf, a naso dara' sui

3,5MHz... +/-400kHz;)

ciao Claudio F

Reply to
Claudio F

per scaricarlo sul pic hai bisogno di un'interfaccia tipo JDM(ludipipo) da collegare alla seriale del PC, sul quale poggerai il pic da programmare(in alternativa puoi usare la programmazione in circuit) Il compilatore C o assembler ti trasformeranno direttamente il codice in linguaggi macchina che sarà un file esadecimale con estensione HEX che potrai scaricare sul PIC utilizzando programmi appositi tipo ICPROG o PONYPROG e simili.

Il pullup è un modo per tenere una linea di I/O a livello logico alto e fornire all'uscita corrente direttemante dall'alimentazione, non è altro che una restistenza dell'rdine dei 5 - 10 Kohm collegata tra il piedino del PIC e la tensione di alimentazione del pic.

quello che deve fare il pulsante lo decidi tu nel firmware(codice programma). infatti il pc alla pressione del pulsante riconosce una variazione di livello logico della linea(input questa volta) e reagisce secondo quello che specifichi nel programma.

Un esempio puo essere un pilsante collegato da un lato alla'imentazione attraverso una resistenza di pull'up e anche al piedino del pic e l'altro contatto del pulsante colegato a massa.

Il pic in condizioni normali sente sempre il piedino a 5V, quando premo il tasto questo piedino viene cortocircuitato a massa e quindi il piedino sente 0 Vquando rilascio il pulsate il piedino torna a sentire 5V. la resistenza serve a separare i 5V dalla massa facendo scorrere poca corrente. se non ci fosse si spegnerebbe il circuito visto che la DDP diventerebbe 0 e tutta la corrente passerebbe attraverso il pulsante. ciao

Reply to
emili

ok mi va bene! 12 * 1,5 = 18watt perfetto

. Infatti da quanto

ok rifaccio i conti, non e ne ero proprio accorto che chiedeva un range di applicazione

grazie! chiarissimo

Reply to
Luca©

ok, ce lho

ok, il problema è ora scrivere questo programmino

oltre a questi comandi non devo scrivere nient altro?

Reply to
Luca©

ti consigli di cercare in rete alcuni codici in C gia fatti per il PIC e cosi ti rendi conto da solo.

ma tu il C lo conosci oppure devi imparere anche quello?

Reply to
emili

qual'è la formula da usare conoscendo R e C?

Reply to
ice

"ice" ha scritto

Non lo so, ho guardato la tabella delle caratteristiche elettriche nel datasheet e fatto un'interpolazione ipotetica. Se mi servisse una frequenza precisa andrei a tentativi, tanto se si vuole restare sopra i 3MHz il range di valori e' piuttosto ristretto.

ciao Claudio F

Reply to
Claudio F

"Luca©" ha scritto

Vedi se questo ti basta come spunto:

formatting link
(per eventuali dubbi ci sono le pagine precedenti)

ciao Claudio F

Reply to
Claudio F

ho trovato su

formatting link
(sito consigliato da Claudio ) questo programmino

domanda: x adattarlo a pic16f84? è possibile/compatibile?

PROCESSOR 16F628 RADIX DEC INCLUDE "P16F628.INC" __CONFIG 11110100010000B ;----------------------------------------------------- LUCE EQU 32 H_CONT EQU 33 L_CONT EQU 34 DIREZ EQU 35 ;----------------------------------------------------- ORG 0 BSF STATUS,RP0 ;Attiva banco 1 CLRF TRISB ;Rende PORTB un'uscita BCF STATUS,RP0 ;Ritorna al banco 0 MOVLW 00000001B MOVWF LUCE ;LUCE=00000001 CLRF DIREZ ;DIREZ=0 MAINLOOP MOVF LUCE,W MOVWF PORTB ;Scrive LUCE sulla PORTB BCF STATUS,C ;Azzera flag C BTFSC DIREZ,0 ;Se DIREZ=0 (sinistra) skip GOTO LAB1 ;altrimenti GOTO LAB1 RLF LUCE,F ;Ruota LUCE verso sinistra GOTO LAB2 ;GOTO fine struttura IF LAB1 RRF LUCE,F ;Ruota LUCE verso destra LAB2 BTFSC LUCE,7 ;Se bit 7 di LUCE è 0 skip INCF DIREZ,F ;altrimenti direzione=destra BTFSC LUCE,0 ;Se bit 0 di luce è 0 skip CLRF DIREZ ;altrimenti direzione=sinistra CALL DELAY ;Richiama subroutine di ritardo GOTO MAINLOOP ;Nuovo ciclo del programma ;----------------------------------------------------- DELAY MOVLW 20 ;Carica 5320 nei 16 bit MOVWF H_CONT ;formati dai due bytes MOVLW 200 ;H_CONT e L_CONT MOVWF L_CONT DELAY2 DECF L_CONT,F ;Decrementa parte bassa del contatore COMF L_CONT,W ;Inverte i bit BTFSC STATUS,Z ;Se tutti zero c'è stato rollover DECF H_CONT,F ;allora decrementa parte alta MOVF L_CONT,W ;Carica in W la parte bassa IORWF H_CONT,W ;Mettila in OR con la parte alta BTFSS STATUS,Z ;Se tutto zero skip (fine ciclo) GOTO DELAY2 ;Altrimenti ritorna a DELAY2 RETURN ;----------------------------------------------------- END

--



>
>
>
Reply to
Luca©

"Luca©" ha scritto

La risposta e' si, e si trova in fondo alla pagina successiva.

ciao Claudio F

Reply to
Claudio F

-- > La risposta e' si, e si trova in fondo alla pagina successiva.

xfetto!!! ora non mi resta che raccogliere i pezzi e farvi sapere l'esito....

Reply to
Luca©

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.