Hallo allen,

Ik heb voor iemand een alarm systeempje gemaakt, heel simpel allemaal, je kan het aan en afzetten met een sleutel contact en als sensor word gebruik gemaakt van een aantal magneet contacten.

Heeft een week gewerkt, maar nu werkt de sleutel niet meer. Ik heb het signaal eens gemeten wat op de µc komt, en dit is 0V of 5v, afhankelijk van de sleutel positie (wat zo ook zou moeten zijn). De µC kan dus blijkbaar geen 1 meer van een 0 scheiden op die pen?

Na wat prutsen ben ik er achter gekomen dat wanneer ik een extra pull up weerstand plaats dat het wel terug werkt! ???

Kan het zijn dat de inwendige pull up van de µC niet sterk genoeg is?

Voormiddag belde de eigenaar om hetzelfde probleem, terwijl er toch nog die extra pull up weerstand is.

Weet iemand wat er hier aan de hand is?

Het gaat om de 16F628, en als ingang word PORTB <4> gebruikt.

Alvast bedankt

Ojeke

LVP uitgezet? (B4 is PGM input...)

Ja, deze staat uit.

De overige functie's doet de µC wel, er is een zone die 24 uur bewaakt is, en deze werkt ook nog steeds.

alvast bedankt

Kan inderdaad van alles zijn. Misschien per ongeluk als output geconfigureerd?

Hoi, dit is de code die ik geschreven heb



'****************************************************************
'*  Name    : Alarm.BAS                                         *
'*  Author  : Achten Joris,            *
'*  Notice  : Copyright (c) 2009 Joris Achten                   *
'*          : All Rights Reserved                               *
'*  Date    : 25/07/2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device 16F648A                ;Gebruik een 16F628A type
Config WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT


ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS true

TRISB=%00110011
TRISA=%11111111

Symbol LED_groen = PORTB.2
Symbol LED_rood = PORTB.3
Symbol Relais_snel = PORTB.6
Symbol Relais_delay = PORTB.7
Symbol Sleutel = PORTB.4
Symbol Tamper_sleutel = PORTB.5
Symbol ZoneA = PORTA.6
Symbol ZoneB = PORTA.1
Symbol ZoneC = PORTA.0
Symbol zoneD = PORTA.7
Symbol Tamper = PORTB.0
Symbol Reset_knop = PORTB.1

Dim Key_stat As Bit
Dim Alarm As Bit
Dim Traag_alarm As Bit
Dim Waarschuwing As Bit
Dim teller As Word
Dim herhaling As Word
Dim Waarschuwing_time_reset As Word


Clear
DelayMS 40000

Symbol Alarm_tijd  = 900        ; seconden
Symbol piep_tijd = 15           ; seconden

begin:


Key_stat = Sleutel
LED_groen = Key_stat
Toggle LED_groen
LED_rood = Key_stat

If Key_stat = 0 Then Waarschuwing = 0
If Waarschuwing_time_reset < 600 Then Inc Waarschuwing_time_reset
If Waarschuwing_time_reset = 600 Then Waarschuwing = 0





If Key_stat = 1 And ZoneB = 1 Then 
 Alarm = 1
 Traag_alarm = 1
EndIf
If Tamper_sleutel = 1 Then Alarm = 1
If Tamper = 1 Then Alarm = 1
If ZoneA = 1 Then Alarm = 1
If ZoneC = 1 Then Alarm = 1
If zoneD = 1 Then Alarm = 1


If Alarm = 1 Then
    Relais_snel = 1
    
        If Waarschuwing = 0 Then
          Waarschuwing = 1
          DelayMS 4000
          Waarschuwing_time_reset = 0

          If ZoneB = 0 Then
            Relais_snel = 0
            Alarm = 0
            GoTo begin
          EndIf
        EndIf 

     If Traag_alarm = 1 Then
      Clear teller
      For herhaling = 0 To 100
       Clear teller
       While teller < piep_tijd

        If Sleutel = 0 Then 
         Relais_delay = 0
         Relais_snel = 0
         Alarm = 0
         Traag_alarm = 0
         GoTo begin
        EndIf

 
       DelayMS 10
       Inc teller
       Wend
      Next 
     EndIf
     
     Relais_delay = 1
     
     DelayMS 5000
     
     
      Clear teller

      For herhaling = 0 To 100
       Clear teller

        While teller < Alarm_tijd
        If Sleutel = 0 And Reset_knop = 0 Then GoTo overbrugging



        DelayMS 10
        Inc teller
       Wend

      Next 
EndIf

Relais_delay = 0
Relais_snel = 0
Alarm = 0
Traag_alarm = 0

DelayMS 10



GoTo begin










overbrugging:


LED_rood = 1
LED_groen = 1
Relais_delay = 0
Relais_snel = 0
Alarm = 0
Traag_alarm = 0
Waarschuwing = 0

While Reset_knop = 0:Wend

DelayMS 1000

While Reset_knop = 1 : Wend

GoTo begin

Hallo,

als je PORTB_PULLUPS true vervangt door PORTB_PULLUPS = true

wat doet hij dan?

Als ik PORTB_PULLUPS true in picbasic zet dan staat hij niet links in de declares lijs, maar met PORTB_PULLUPS = true staat hij er wel.
Weet niet of dit werkt aangezien je bij de rest van portb geen problemen hebt.

Dit lijkt me weinig effect te hebben, maar ik zal het eens proberen. Het heeft perfect gewerkt voor een tijdje, dus het lijkt me geen software fout. Kan het zijn dat ik toevallig een slechte µC heb?

MVG

Ojeke

't Probleem is toch verholpen als je een externe pull-up weerstand plaatst? Opgelost lijkt me ;)

Zit die uC soms in een voetje? (En zit net die ene pin los?)

Op 13 augustus 2009 19:44:45 schreef Boeip:
't Probleem is toch verholpen als je een externe pull-up weerstand plaatst? Opgelost lijkt me ;)

zo was het opgelost voor een dag, vandaag weer telefoon gehad dat het weer niet werkte, nog niet gaan kijken, maar de symptomen. zijn hetzelfde.

Op 13 augustus 2009 19:45:52 schreef Lucky luke:
Zit die uC soms in een voetje? (En zit net die ene pin los?)

zit in een voet ja, moet ik eens goed naar kijken.

Op 13 augustus 2009 21:09:17 schreef ojeke:
zit in een voet ja, moet ik eens goed naar kijken.

Als het zo'n goedkoop voetje met veertjes is, dan beter voetje weggooien en solderen of een voetje met gedraaide gouden contactjes nemen:

http://www.verelec.com/catalog/images/8pin%20voet.bmp

Het is aan te raden om PORTB_PULLUPS ON pas ná de TRIS instelling te plaatsen.

Hoi,

Ben momenteel op vakantie, maar als ik terug ben ga ik het allemaal eens proberen.

Alvast bedankt