Ersätta relälogik med en PIC!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
BultaIBo
Inlägg: 32
Blev medlem: 21 mars 2006, 18:08:03
Ort: Hammarö

Ersätta relälogik med en PIC!

Inlägg av BultaIBo »

Jag skall ersätta en reläbox som används för att upprätta en slags logik i ett styrsystem. Efter att letat runt på lite olika lösningar så fastnade jag för att använda mig av en PIC. Har tänkt mig att använda en PIC16F877A och programmera den i C.

Skulle behöva lite tips på generell design och har därför lite frågor.

1a) Det är ungefär 20 insignaler, hur märker jag om en av signalerna ändras? Via interupt eller skall man lägga sig i en loop i main() och polla alla insignaler med jämna mellanrum?

1b) Om svaret på 1a) är via interupt, finns det så många ingångar som man kan definera interuptrutiner för på 877A, eller hur gör jag då?

2) Hur temperaturkänslig är min PIC-krets, kan jag använda den utomhus? Vad behöver jag i så fall tänka på?

3) Finns det något smart sätt att logga antalet driftstimmar som PIC:en har varit igång? Antar att man skriver det till EEPROM, men det är ju inte så smart att skriva dit för frekvent eller?

4) Vilket är det bästa sättet att ta emot en insignal som är 12V? Via optokopplare eller går det bra att sätta ett lämpligt motstånd?

5) Hur driver jag enklast en last på 1A och 12 V?

Hoppas jag inte ställer allt för konstiga frågor...men frågar man inte så får man inga svar!

Tack på förhand!
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Du kan som bäst ha 8 st interrupt-on-change i PIC, alltså måste du polla. Det är dock inte så svårt alls. Om vi antar att PORTA är en av portarna som ska övervakas:
unsigned char Previous_A, Result, Memory;
...
Memory = PORTA; // Detta läser PORTA 1 gg och förhindrar att ett nivåbyte kan gå oavkänd
Result = Memory ^ Previous_A;
Previous_A = Memory;
// Result innehåller numera en '1':a för varje plats det skiljer från förra genomgång

Du kan använda den utomhus, se bara till att använda en för industriellt temp. område.

Du kan logga hela timmer, det pallar den för i ca: 11 år.... det finns även ferroelektriska seriella EEPROM-minnen med ett max antal skrivcykler om ca: 10^14. Det skulle väl räcka.

12V....det är alltid störsäkert och bra med optokopplare.

Laster drivs bra via MOSFET eller relä eller en kombination.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Icecap har (som vanligt) givit ett bra svar, men jag vill bara komplettera
lite här och där... :-)

För fler än 8 IOC ("Interrupt On Change) pinnar kan man använda "Port Expanders".
Se www.microchip.com för mer info.

> finns det så många ingångar som man kan definera interuptrutiner för på 877A,

Här är det nog lite missförstånd...
Alla 8 IOC ingångar ger *samma* interrupt. Sedan får man själv i sin kod
kolla vilken av de 8 pinnarna det var som ändrades.

> Hur temperaturkänslig är min PIC-krets, kan jag använda den utomhus?
> Vad behöver jag i så fall tänka på?

Temperatur gränserna (och eventuella begränsningar i funktionen) finns
tydligt angiva i respektive datablad. För maximal temp-område, finns det
"Extended temp range" device (de heter något med ett "E" i slutet av
namnet. De "Industrial temp range" som Icecap nämner är i princip
standardmodellen. Jag tror att det är "-E/P" resp "-I/P" för DIP versionen.

För "loggning" i EEPROM, så är ett vanligt sätt att logga i RAM och sedan
om spänningen försvinner kopiera värderna till EEPROM. Man får ha lite
extra prylar för att detektera att spänningen försvinner...
Användarvisningsbild
simon78
Inlägg: 1091
Blev medlem: 8 juni 2004, 11:05:51
Ort: Vinninga/Lidköping
Kontakt:

Inlägg av simon78 »

nyare ATMega (48,88,168) har väl ca 24 pinchange-ingångar, uppdelade på tre interrupter, i vilka man får kolla vilken pinne som ändrats. Programmeras med fördel i C.
Användarvisningsbild
BultaIBo
Inlägg: 32
Blev medlem: 21 mars 2006, 18:08:03
Ort: Hammarö

Inlägg av BultaIBo »

Tack alla för tipsen! Suveränt!

Sodjan! Var hittar jag ett exempel på HW för att detektera spänningsbortfall? Finns någon speciell krets har jag för mig...eller?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Var hittar jag ett exempel på HW för att detektera spänningsbortfall?
> Finns någon speciell krets har jag för mig...eller?

Finns flera sätt, enkla kopplingar med konding, diod m.m.
Sedan special kretsar ("watchdog") från t.ex Maxim bara för att nämna
en leverantör som brukar ha mycket i detta område.

Men i de flesta fall räcker det med enkla kopplingar med lite
lösa komponenter...
Skriv svar