PIC <--> Alarmsysteem
PIC <--> Alarmsysteem
Hallo,
Ik heb een alarm systeem dat een SMS met een positie verstuurd als er wat gebeurt. Dit systeem kan aan en uit gezet worden via SMS, een terminal emulator (seriele verbinding) of een dallas key.
Ik wil graag het systeem aan of uit kunnen zetten d.m.v. het schakelen van 12 volt op een draad.
Mijn idee is als volgt:
Ik programmeer een PIC die detecteerd of er 12 volt op een draad staat en op basis daarvan serieel een aantal commando's naar het alarmsysteem stuurt.
Gezien mijn geringe electronica kennis heb ik wat hulp nodig.
Wil iemand mij helpen met het maken van een schema?
Na wat zoek werk weet ik dat ik inieder geval de volgende onderdelen nodig heb:
- PIC met USART ondersteuning
- MAX232
- 7805 om de PIC te voeden
en dan?
Moet ik nog een 7805 hebben om ervoor te zorgen dat ik het schakeldraad (12v) naar 5v breng om aan te sluiten op één van de I/O poorten van de PIC?
Moet ik ook een kristal aansluiten voor een externe klok?
bvd, Pieter Paul
Ik heb een alarm systeem dat een SMS met een positie verstuurd als er wat gebeurt. Dit systeem kan aan en uit gezet worden via SMS, een terminal emulator (seriele verbinding) of een dallas key.
Ik wil graag het systeem aan of uit kunnen zetten d.m.v. het schakelen van 12 volt op een draad.
Mijn idee is als volgt:
Ik programmeer een PIC die detecteerd of er 12 volt op een draad staat en op basis daarvan serieel een aantal commando's naar het alarmsysteem stuurt.
Gezien mijn geringe electronica kennis heb ik wat hulp nodig.
Wil iemand mij helpen met het maken van een schema?
Na wat zoek werk weet ik dat ik inieder geval de volgende onderdelen nodig heb:
- PIC met USART ondersteuning
- MAX232
- 7805 om de PIC te voeden
en dan?
Moet ik nog een 7805 hebben om ervoor te zorgen dat ik het schakeldraad (12v) naar 5v breng om aan te sluiten op één van de I/O poorten van de PIC?
Moet ik ook een kristal aansluiten voor een externe klok?
bvd, Pieter Paul
-
Mat Janssen
- Moderator

- Berichten: 11593
- Lid geworden op: wo 10 dec 2003, 18:36
- Locatie: nederweert. .. .. .. .. .. .. .. .. .
Het is een Eagle Eye.
Deze dingen werden via budgetcom.nl verkocht. Ze werden gebruikt voor de geld transporten met de invoering van de euro.
Helaas is de fabrikant van dit product hier niet zo blij mee en weigert enige info over de werking van het apparaat vrij te geven...
Bestaat er ook gratis software waarmee ik schema kan tekenen en eventueel testen? /edit.. Gevonden,. kan gewoon met visio
Deze dingen werden via budgetcom.nl verkocht. Ze werden gebruikt voor de geld transporten met de invoering van de euro.
Helaas is de fabrikant van dit product hier niet zo blij mee en weigert enige info over de werking van het apparaat vrij te geven...
Bestaat er ook gratis software waarmee ik schema kan tekenen en eventueel testen? /edit.. Gevonden,. kan gewoon met visio
k heb op internet al wat bruikbare schema's gevonden:
Ik ga een PIC16F628A gebruiken omdat daar al een oscilator zit ingebouwd.
Ik ga een PIC16F628A gebruiken omdat daar al een oscilator zit ingebouwd.
Is het niet makkelijker om een 7805 te gebruiken, het voltage kan namelijk varieren tussen de 10 en 14 volt en dan hoef ik dat niet uit te rekenen (noob) Of kleven er nadelen aan het gebruik van die 7805 IC's?Met een weerstandsdeling kun je het 12V naar 5 volt maken.
-
Mat Janssen
- Moderator

- Berichten: 11593
- Lid geworden op: wo 10 dec 2003, 18:36
- Locatie: nederweert. .. .. .. .. .. .. .. .. .
Ben inmiddels alweer een stukje verder.
Ik heb een programmer inelkaar gesoldeerd en ben nu bezig om het programma voor de pic16f628a te schrijven.
Ik wil dit in picbasic gaan doen, en gebruik een boek om deze taal onder de knie te krijgen.
In dit boek staat een voorbeeld wat ik gebruik om mijn programma te schrijven... Ik begrijp echter een ding niet....
In het onderstaande voorbeeld staat op een gegeven moment POKE PORTB,1
Kan iemand mij vertellen waarom dit gedaan wordt?
[/code]
Ik heb een programmer inelkaar gesoldeerd en ben nu bezig om het programma voor de pic16f628a te schrijven.
Ik wil dit in picbasic gaan doen, en gebruik een boek om deze taal onder de knie te krijgen.
In dit boek staat een voorbeeld wat ik gebruik om mijn programma te schrijven... Ik begrijp echter een ding niet....
In het onderstaande voorbeeld staat op een gegeven moment POKE PORTB,1
Kan iemand mij vertellen waarom dit gedaan wordt?
Code: Selecteer alles
‘**************************************************************************
‘
‘ PROGRAMMABLE THERMOMETER WITH RS232 OUTPUT
‘ ===============================================
‘
‘ In this project an analog temperature sensor (LM35DZ) is connected to one of
‘ the A/D channels of a PIC16F877 microcontroller. The microcontroller is
‘ operated from a 4 MHz external rezonator.
PicBasic and PicBasic Pro projects 321
‘
‘ The thermometer is connected to either COM1 or the COM2 serial port
‘ of a PC. A terminal emulation program, such as the Hyperterminal is
‘ activated on the PC to communicate with the thermometer. During this
‘ communication the user is prompted to enter the sampling interval and the
‘ mode of the output required (degrees C or degrees F).
‘
‘ A typical communication between the thermometer and the PC is as
‘ follows (in this example the sampling interval is selected as 2 seconds, and
‘ the output is requested in degrees C):
‘
‘ Digital Thermometer With RS232 Output
‘ =============================
‘
‘ Enter sampling interval in seconds: 2
‘ Output is degrees C (C) or degrees F (F) : C
‘ Press ENTER to start data collection…
‘
‘ Data collection started:
‘
‘ nnC
‘ nnC
‘ .....
‘ .....
‘
‘ PORTB pins RB0 and RB1 are configured as RS232 TX and RX lines respectively.
‘ RB0 is connected to pin 2 of the RS232 connector. Similarly, RB1 is connected
‘ to pin 3 of the RS232 connector. The communication parameters are selected as
‘ follows:
‘
‘ 2400 baud
‘ 1 start bit
‘ 8 data bits
‘ No parity
‘ 1 stop bit
‘
‘ The temperature sensor is connected to the microcontroller as follows:
‘
‘ Sensor Microcontroller pin
‘ ----------- ------------------------
‘ LM35DZ AN0 (RA0)
‘
‘ The PIC16F877 microcontroller has built in 10-bit 8 channel A/D converters.
‘ The A/D reference voltage is set to _5V.
‘
‘ In this program PicBasic statement ADCIN is used to read analog data
‘
‘
‘ Author: Dogan Ibrahim
‘ Date: November, 2005
‘ Compiler: PicBasic
‘ File: RS232-1.BAS
‘
‘ Modifications
‘ ==========
‘
‘************************************************************************
‘
‘ DEFINITIONS
‘
‘
Symbol ADCON0 = $1F ‘ Address of ADCON0
Symbol ADCON1 = $9F ‘ Address of ADCOn1
Symbol ADRESH = $1E ‘ Address of ADRESH
Symbol ADRESL = $9E ‘ Address of ADRESL
Symbol TRISA = $85 ‘ Address of TRISA
Symbol TRISB = $86 ‘ Address of TRISB
Symbol PORTA = $05 ‘ Address of PORTA
Symbol PORTB = $06 ‘ Address of PORTB
‘ VARIABLES
‘
Symbol Mode = B1 ‘ Mode (C or F)
Symbol D = B2
Symbol Dummy = B3
Symbol TSample = W2 ‘ Sampling time (seconds)
Symbol Resl = W3
Symbol Resh = W4
Symbol Res = W5
Symbol Temp1 = W6 ‘ Temperature
‘
‘ SYMBOLS
‘
Symbol RS232_out = 0 ‘ RB0 is RS232 output
Symbol RS232_in = 1 ‘ RB1 is RS232 input
322 PIC BASIC Projects
‘
‘ CONSTANTS
‘
Symbol CR = 13 ‘ Carriage-return character
Symbol LF = 10 ‘ Line-feed character
POKE TRISA, 1 ‘ RA0 (AN0) is input
POKE TRISB, 2 ‘ RB0=output, RB1=input
POKE PORTB, 1 <================== Dit begrijp ik niet
PAUSE 100
‘
‘ Send Heading
‘
Again:
SEROUT RS232_out, T2400, (LF,CR, “Digital Thermometer With RS232 Output”)
SEROUT RS232_out, T2400, (LF,CR, “ ==============================”)
SEROUT RS232_out, T2400, (LF,LF,CR, “Enter sampling interval in seconds : ”)
SERIN RS232_in, T2400, #TSample
SEROUT RS232_out, T2400, (#Tsample)
SEROUT RS232_out, T2400, (LF,CR, “Degrees C (C) or degrees F (F) : ”)
SERIN RS232_in, T2400, Mode
SEROUT RS232_out, T2400, (Mode)
SEROUT RS232_out, T2400, (LF,CR, “Press ENTER to start...”)
SERIN RS232_in, T2400, Dummy
SEROUT RS232_out, T2400, (LF,CR)
TSample = TSample*1000
‘
‘ Initialize the A/D converter
‘
POKE ADCON1, %10001110 ‘ Make AN0 analog input,
‘ make reference voltage = VDD
POKE ADCON0, %01000001 ‘ A/D clock is internal, select channel AN0
‘ Turn on A/D converter
More:
‘ Start A/D conversion and get 60 samples for an hour
PicBasic and PicBasic Pro projects 323
324 PIC BASIC Projects
‘
‘
D = “C”
PEEK ADCON0, B0
Bit2 = 1
POKE ADCON0, B0 ‘ Start A/D conversion
WT: Pause 1
PEEK ADCON0, B0
IF Bit2 = 1 THEN WT
PEEK ADRESH, Resh ‘ Get high byte
PEEK ADRESL, Resl ‘ Get low byte
Res = Resh*256 _ Resl
Temp1 = 48 * Res ‘ Convert to degrees C
Temp1 = Temp1/100
IF Mode = “C” THEN Cent ‘ If Fahrenheit
Temp1 = Temp1 * 18
Temp1 = Temp1 _ 320
Temp1 = Temp1 / 10
D = “F”
Cent:
SEROUT RS232_out, T2400, (LF,CR, #Temp1, D)
PAUSE TSample
GOTO More
END
Met "POKE PORTB,1" word waarschijnlijk bit 1 van port B gezet.
Dus uitgang B0 is hoog.
Maar wat wil je precies doen ???
De 16F628(a) heeft geen ADC !!!
dus echte meetingen kun niet niet met deze pic doen.
Wat je mischien kan doen is een weerstanddeling met daar achter een
condensator en dan met het POT commando de status van de poort op halen.
En je kunt met het commando hserout de opdracht verzenden.
PS ik gebruik proton picbasic.
Trouwens bovenstaand voorbeeld heb je niets aan, werkt op basis van de 16F877 deze heeft een ADC en de 16F628 niet !!!
Mocht je meer hulp nodig hebben, zie ik het wel.
Dus uitgang B0 is hoog.
Maar wat wil je precies doen ???
De 16F628(a) heeft geen ADC !!!
dus echte meetingen kun niet niet met deze pic doen.
Wat je mischien kan doen is een weerstanddeling met daar achter een
condensator en dan met het POT commando de status van de poort op halen.
En je kunt met het commando hserout de opdracht verzenden.
PS ik gebruik proton picbasic.
Trouwens bovenstaand voorbeeld heb je niets aan, werkt op basis van de 16F877 deze heeft een ADC en de 16F628 niet !!!
Mocht je meer hulp nodig hebben, zie ik het wel.
Ik ben inmiddels alweer een stuk verder. Mijn toepassing is erg simpel, hier heb ik geen A/D converter voor nodig.Maar wat wil je precies doen ???
De 16F628(a) heeft geen ADC !!!
dus echte meetingen kun niet niet met deze pic doen
Het komt erop neer dat er op basis van een bepaalde gebeurtenis serieel een reeks commando's moet worden verstuurd. Hiervoor gebruik ik een max232 ic.
Dit is nodig omdat het alarm alleen via een dallas key of een PC (hyperterminal) ge(de)activeerd kan worden.
Aangezien ik geen gebruik wil maken van een dallas key laat ik de PIC de pc simuleren.
Ik heb het inmiddels werkend op een ontwikkelboard en ga het volgende week testen i.c.m. het alarm systeem
Ik heb het inmiddels werkend. Wil iemand voor mij het onderstaande schema contoleren op fouten??
http://members.chello.nl/~p.d.baron/pieter/print.JPG
Bijbehorende code (basic)
http://members.chello.nl/~p.d.baron/pieter/print.JPG
Bijbehorende code (basic)
Code: Selecteer alles
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
SYMBOL AAN = 0 ;Schakelaar aan = laag (0)
SYMBOL UIT = 1 ;Schakelaar uit = hoog (1)
'Schakelaar = ingang
'B5 = led (output)
'B0 = switch (input)
'B1 = RX (input)
'B2 = TX (output)
' 76543210
trisa = %11111111
trisb = %00000011
SYMBOL LED1 = portb.5
SYMBOL S1 = portb.0
Symbol RS232_out = portb.2
Symbol RS232_in = portb.1
dim armed_flag as bit
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
init:
DELAYMS 2000
if s1 = uit then
armed_flag = 0
else
armed_flag = 1
end if
; Eagle eye specific commands
; -SPRIV 1 ;Private comms on
; -SPRIV 0 ;Private comms off
; -SOPS 2 ; Reset -SOPS 1, System stays Armed (Status led blinks slow)
; -SOPS 1024 ;Activate alarm (no exit delay)
; -SOPS 2048 ; Disarm alarm
;Initialise
delayms 2000 ; Wait for Eagle eye to start
goto MAIN ; Ga to main program
;Main program
MAIN:
While 1 =1
IF s1 = uit then
;SEROUT RS232_out,188,[13,10,"Goto ARM"]
delayms 400
goto arm
else
';SEROUT RS232_out,188,[13,10,"Goto DISARM"]
delayms 400
goto disarm
end if
wend
arm:
if armed_flag = 1 then
goto main ; System is already armed goto main program
else ; System isn't armed
SEROUT RS232_out,188,["-SPRIV 1",13,10] ;Set private communication
delayms 200
SEROUT RS232_out,188,["-SOPS 1026",13,10] ;Reset alarm (2) + activate alarm (1024) = 1026
delayms 200
SEROUT RS232_out,188,["-SPRIV 0",13,10] ;Set private communication off
HIGH LED1 ;LED1 on
armed_flag = 1 ;set armed flag
goto main ;return to main program
end if
disarm:
if armed_flag = 0 then
goto main ; System is already dis-armed goto main program
else ; System is armed
SEROUT RS232_out,188,["-SPRIV 1",13,10] ;Set private communication
delayms 200
SEROUT RS232_out,188,["-SOPS 2050",13,10] ;Reset sops alarm (2) + disarm alarm (2048) = 2050
delayms 200
SEROUT RS232_out,188,["-SPRIV 0",13,10] ;Set private communication off
LOW LED1 ;LED1 on
armed_flag = 0 ;set armed flag
goto main ;return to main program
end if
END
.. Andere vraag.
Moet ik op de basis van de transistor die ik gebruik ook een weerstand zetten??
Kan het zijn dat een defecte transistor altijd stroom doorgeeft van de collector naar de emittor?
Moet ik op de basis van de transistor die ik gebruik ook een weerstand zetten??
Kan het zijn dat een defecte transistor altijd stroom doorgeeft van de collector naar de emittor?
Laatst gewijzigd door p2b op ma 23 jul 2007, 21:48, 1 keer totaal gewijzigd.
het type
de ene kan meer stroom aan daqn de ander voor een lijst van die gegevens zie: http://www.circuitsonline.net/artikelen/view/19/2
sucses
sucses
10-14V omzetten naar TTL
Kan je hiervoor niet beter een optocoupler gebruiken 4N25 of iets dergelijks met een voorschakel weerstand van 470 Ohm ?