Salve ragazzi ho finalmente ralizzato il modulo orologio di cui vi chiesi un aiuto di compilazione ( vedi altro topic aperto )
ora arriva il bello.
dunque vorrei sfruttare l'uscita I2C proveniente dal DS1307 ( è presente una apposita piedinatura sulla scheda per prelevare il segnale ) per utilizzarla in ingresso di un PIC 16f84 al quale vorrei collegare due transistor bc337 e quindi due relè. il PIC dovrebbe semplicemente "ascoltare in I2C lo scoccare dei 60 secondi ed eccitare quindi una volta il relè A ( un secondo o anche meno ) e dopo altri 60 secondi il relè B ( un secondo o anche meno )
in pratica dovrebbe ripetere un ciclo di 120 secondi dopo i primi 60 relè A e dopo 120 secondi relè B
domanda: è fattibile ?
ora vi chiedo di astenersi da risposte del tipo "ma fai così oppure era meglio cosà "
mi chiedo il PIC 16f84 ha la capacità per fare quel che richiedo ?
inoltre se aggiungessi due pulsanti al PIC potrei fargli richiamare un mini programma per avanzare di un ora oppure di 23 ore ? ( in pratica per avanzare di un ora dovrebbe compiere 30 cicli di impulsi di relè A e B e così per le 23 ore)
posto un piccolo schema tirato giù in eagle mancano delle cosucci come diodi e resistenze ma rende già l'idea
grazie a chi mi aiuterà
Daniele
16F84 e I2C ds1307 eccitare due relè ogni 60 secondi
Moderatore:
Paolino
46 messaggi
• Pagina 1 di 5 • 1, 2, 3, 4, 5
0
voti
Non conosco il circuito DS che hai citato e non capisco bene la tecnica che vuoi usare, però la temporizzazione di 120s di per se mi sembra fattibile.. Quanti timer ha il PIC in questione? E da quanti bit sono?
Cosa dice il datasheet?
EDIT: allo schema manca il diodo di protezione per il transistore.
Cosa dice il datasheet?
EDIT: allo schema manca il diodo di protezione per il transistore.
0
voti
grazie mille per la risposta
sapevo del diodo ho tirato giù una bozza per siegare il mio desiderio
questo è l'orologio di cui parlo viewtopic.php?f=17&t=33366
ti spiego meglio
funziona con una DS1307 che è un RTC in I2C in pratica passa via I2C i dati di data ed ora alla 16F877 la quale si occupa di gestire questa visualizzazione sul display 16x2
ora nel contempo passa i dati anche ad una uscita piedinata sotto la PIC in modo da poterci collegare altre schede.
io vorrei appunto realizzare una di queste per pilotare questi due relè
mi chiedo riesco a decodificare il segnale I2C del DS1307 con una PIC 16F84 ?
se scrivessi il programma su arduino poi potrei compilarlo per 16F84 ?
grazie mille
Daniele
sapevo del diodo ho tirato giù una bozza per siegare il mio desiderio
questo è l'orologio di cui parlo viewtopic.php?f=17&t=33366
ti spiego meglio
funziona con una DS1307 che è un RTC in I2C in pratica passa via I2C i dati di data ed ora alla 16F877 la quale si occupa di gestire questa visualizzazione sul display 16x2
ora nel contempo passa i dati anche ad una uscita piedinata sotto la PIC in modo da poterci collegare altre schede.
io vorrei appunto realizzare una di queste per pilotare questi due relè
mi chiedo riesco a decodificare il segnale I2C del DS1307 con una PIC 16F84 ?
se scrivessi il programma su arduino poi potrei compilarlo per 16F84 ?
grazie mille
Daniele
0
voti
ecco le caratteristiche del DS1307
Description
The DS1307 serial real-time clock (RTC) is a low-power, full binary-coded decimal (BCD) clock/calendar plus 56 bytes of NV SRAM. Address and data are transferred serially through an I²C, bidirectional bus. The clock/calendar provides seconds, minutes, hours, day, date, month, and year information. The end of the month date is automatically adjusted for months with fewer than 31 days, including corrections for leap year. The clock operates in either the 24-hour or 12-hour format with AM/PM indicator. The DS1307 has a built-in power-sense circuit that detects power failures and automatically switches to the backup supply. Timekeeping operation continues while the part operates from the backup supply. Data Sheet
Download Rev 5 (PDF, 148kB)
E-Mail
Key Features
Real-Time Clock (RTC) Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the week, and Year with Leap-Year Compensation Valid Up to 2100
56-Byte, Battery-Backed, General-Purpose RAM with Unlimited Writes
I²C Serial Interface
Programmable Square-Wave Output Signal
Automatic Power-Fail Detect and Switch Circuitry
Consumes Less than 500nA in Battery-Backup Mode with Oscillator Running
Optional Industrial Temperature Range: -40°C to +85°C
Available in 8-Pin Plastic DIP or SO
Underwriters Laboratories (UL) Recognized
Description
The DS1307 serial real-time clock (RTC) is a low-power, full binary-coded decimal (BCD) clock/calendar plus 56 bytes of NV SRAM. Address and data are transferred serially through an I²C, bidirectional bus. The clock/calendar provides seconds, minutes, hours, day, date, month, and year information. The end of the month date is automatically adjusted for months with fewer than 31 days, including corrections for leap year. The clock operates in either the 24-hour or 12-hour format with AM/PM indicator. The DS1307 has a built-in power-sense circuit that detects power failures and automatically switches to the backup supply. Timekeeping operation continues while the part operates from the backup supply. Data Sheet
Download Rev 5 (PDF, 148kB)
Key Features
Real-Time Clock (RTC) Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the week, and Year with Leap-Year Compensation Valid Up to 2100
56-Byte, Battery-Backed, General-Purpose RAM with Unlimited Writes
I²C Serial Interface
Programmable Square-Wave Output Signal
Automatic Power-Fail Detect and Switch Circuitry
Consumes Less than 500nA in Battery-Backup Mode with Oscillator Running
Optional Industrial Temperature Range: -40°C to +85°C
Available in 8-Pin Plastic DIP or SO
Underwriters Laboratories (UL) Recognized
0
voti
djdanielb ha scritto:in pratica passa via I2C i dati di data ed ora alla 16F877
Stai usando un PIC16F84 o un PIC16F877?
mi chiedo riesco a decodificare il segnale I2C del DS1307 con una PIC 16F84?
Il DS1307 ha l'output Open Drain, se lo vuoi interfacciare con il PIC consiglio di usare l'IOC, con resistenza di pull-up sull'output del DS o perché no usare la resistenza di pull-up interna..
Lo puoi usare salvo complicazioni aggiuntive, ma perché non implementare un orologio direttamente con il PIC?
se scrivessi il programma su arduino poi potrei compilarlo per 16F84?
I don't think so..
0
voti
grazie per la risposta ma forse non sono riuscito a spiegarmi ci riprovo:
le schede sono 2 quindi le PIC sono 2
su ogni scheda c'è una PIC
sulla prima già pronta e funzionante c'è il DS1307 la PIC 16F877 e il display 16x2
oltre a questo è presente l'uscita CLOCK E DATA proveniente dal DS1307
sulla seconda scheda ci andrebbe una seconda PIC ( 16 f84 ) che prendendo i dati provenienti dalla prima scheda dovrebbe SOLO contare 60 secondi per eccitare il primo relè e poi ricontare 60 secondi per eccitare il secondo releè
spero di esser stato chiaro
ora cercando in giro e googlando ho travato una seconda soluzione fatta sfruttando quello che io ho già applicandolo ad un chip ATMEL168 che è lo stesso usato da arduino
mi sembra che questo faccia esattamente quel che volgio io:
ovvero prende dal chip ds1307 il clock e il data e lo sfrutta per pilotare due bc557 e 547
ora però il problema è che io per eccitare i due relè ho bisogno di 12 volt
che ne dite ?
grazie mille
Daniele
le schede sono 2 quindi le PIC sono 2
su ogni scheda c'è una PIC
sulla prima già pronta e funzionante c'è il DS1307 la PIC 16F877 e il display 16x2
oltre a questo è presente l'uscita CLOCK E DATA proveniente dal DS1307
sulla seconda scheda ci andrebbe una seconda PIC ( 16 f84 ) che prendendo i dati provenienti dalla prima scheda dovrebbe SOLO contare 60 secondi per eccitare il primo relè e poi ricontare 60 secondi per eccitare il secondo releè
spero di esser stato chiaro
ora cercando in giro e googlando ho travato una seconda soluzione fatta sfruttando quello che io ho già applicandolo ad un chip ATMEL168 che è lo stesso usato da arduino
mi sembra che questo faccia esattamente quel che volgio io:
ovvero prende dal chip ds1307 il clock e il data e lo sfrutta per pilotare due bc557 e 547
ora però il problema è che io per eccitare i due relè ho bisogno di 12 volt
che ne dite ?
grazie mille
Daniele
0
voti
dunque visto che per programmarlo si è deciso di usare arduino ecco lo sketch per farlo funzionare
quello che non capisco è
dove c'è l'uscita per il pin 15 e 16 che in figura si vede vanno ai transistor ?
- Codice: Seleziona tutto
// Lunchtime Clock
// by Randy Sarafan
//
// Slows down 20% at 11 and speeds up 20% at 11:48 until it hits 1.
// The rest of the time the clock goes at normal speed
//
// Do what you want with this code. Just make certain that whatever you do, it is awesome.
//
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
int clockpin = 9;
int clockpin1 = 10;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
}
void loop () {
DateTime now = RTC.now();
TurnTurnTurn(1000);
if (now.hour() == 11) {
for (int i = 0; i < 1800; i++) {
TurnTurnTurn(800);
}
for (int i = 0; i < 1800; i++) {
TurnTurnTurn(1200);
}
}
}
int TurnTurnTurn(int TimeToWait){
analogWrite(clockpin, 0);
analogWrite(clockpin1, 124); // sets the value (range from 0 to 255)
delay(TimeToWait);
analogWrite(clockpin, 124);
analogWrite(clockpin1, 0);
delay(TimeToWait);
}
quello che non capisco è
dove c'è l'uscita per il pin 15 e 16 che in figura si vede vanno ai transistor ?
1
voti
Allora. Se usi un PIC16F84 perché programmare un ATmega?
Stai facendo molta confusione. Gli schemi falli in Fidocad ed il circuito stile fumetto con i transistori, non mi piace per niente...
Se solo vuoi interfacciare il DS1307 con il PIC16F84, collega l'output del DS ad un pin con l'IOC, conti le interruzioni tenendo presente che l'interruzione dell'IOC avviene sia per una transizione
(NGT) come
(PGT), dopo un tot di numero di interruzioni saranno passati tot secondi e lì commuti i transistori per i relé. Se questo è il problema questa dovrebbe essere la soluzione.
Stai facendo molta confusione. Gli schemi falli in Fidocad ed il circuito stile fumetto con i transistori, non mi piace per niente...
Se solo vuoi interfacciare il DS1307 con il PIC16F84, collega l'output del DS ad un pin con l'IOC, conti le interruzioni tenendo presente che l'interruzione dell'IOC avviene sia per una transizione
(NGT) come
(PGT), dopo un tot di numero di interruzioni saranno passati tot secondi e lì commuti i transistori per i relé. Se questo è il problema questa dovrebbe essere la soluzione.1
voti
Tieni conto che il PIC16F84 non dispone di un'interfaccia I2C hardware: la dovrai simulare via firmware.
Ciao.
Paolo.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Ciao
Paolino, una domanda.
La soluzione con l'IOC proposta l'ho pensata adesso al volo facendo anche altro. Mi sembra fattibile, confermi? È quello che intendi anche tu col simulare l'I2C?
La soluzione con l'IOC proposta l'ho pensata adesso al volo facendo anche altro. Mi sembra fattibile, confermi? È quello che intendi anche tu col simulare l'I2C?
46 messaggi
• Pagina 1 di 5 • 1, 2, 3, 4, 5
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

