Rely
Golden Member
Hallo technici.
Software vraag: Ik wil met een uitgang van een Pic, een relais aansturen als de Led van een bluetooth ontvanger constant aan is.
Als deze knippert ( met een freq. van 1 Hz, er is dan geen communiatie ) moet de uitgang laag zijn.
Dit om een versterker in of uit te schakelen.
Er zijn dus 2 mogelijkheden, detectie van Led aan of Led knippert.
Hoe vertel ik dat aan de 12F675 Pic?
Ik heb PICKit2 en Proton dongle.
Bedankt voor meedenken, Gerard
Ik zou er een state machine van vouwen. Iets als:
State wacht:
- Is de led aan? -> state aan, sla tijd op.
State aan:
- gaat de led uit? -> state wacht.
- (Huidige tijd - opgeslagen tijd) > 1 s ? -> state verbonden.
State verbonden:
- relais aan.
- Gaat de led uit? -> relais uit en state wacht.
Rely
Golden Member
allo Aart. Bedankt voor het meedenken.
Echter is dit te cryptisch voor mij.
Hoe maak ik hier een programma van?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Dit werkt (MikroBasic). Hexfile zit erbij.
Simpele versie zonder interrupt gebruik...
'==============================================================================
' File: ledtest_12f675.mbas
' Created on 26-08-2024
' Pulse: input
' Relay: output
'==============================================================================
Program LedTest
Dim Pulse As sBit At GP0_bit 'Pulse/led input
Relay As sBit At GP1_bit 'Relay output
Const MIN_PULSE = 110 'Min pulsetime * 10mS
Dim PulseCount As Byte
Sub Procedure Init()
GPIO = %00000000 'Outputs low
TRISIO = %00000001 'GP0 input, rest output
ANSEL = %00000000 'All i/o digital
CMCON = %00000111 'Comparators off
PulseCount = 0
End Sub
'==============================================================================
Main:
Init()
while True
If Pulse Then
If PulseCount < MIN_PULSE Then Inc (PulseCount) End If
Else
PulseCount = 0
End If
Relay = (PulseCount = MIN_PULSE)
Delay_ms(10)
Wend
end.als je nu bv 5metingen doet met een sleep van 500mS en je hebt 5x een hoog signaal gemeten, dan is de led gewoon aan.
je kan de led draden aftakken en die aan je pic-ingang aansluiten
of met een LDR bovenop de led geplakt of een opto coupler parallel op die led hangen als je galvanisch gescheiden wil zijn
Rely
Golden Member
Hallo Arco.
Ziet er prima uit!
Bedankt voor het programma. De led uitlezing doe ik met een optocoupler (TIL), en Relais stuur ik met een transistor.
Groet, Gerard.
Rely
Golden Member
Helaas werkt dit programma niet omdat ik geen "Microbasic" programma heb.
Ik werk al een lange tijd met Picbasic.nl (en Proton compiler)
Ook de hexfile wordt niet geaccepteerd.
Maar wel bedankt voor de inzet.
Groet, Gerard
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Hexfile kun je gewoon inlezen in het Pickit2 programma. Moet werken, is getest...
Als je de source in Picbasic wilt omzetten moet dat ook simpel kunnen, maar daar werk ik nooit mee...
Mikrobasic compiler is tot 4k code trouwens gratis...
[Bericht gewijzigd door Arco op (13%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
OPTOdesign
R&D | Design | Light | Innovation | Education
Op zondag 25 augustus 2024 20:16:23 schreef Rely:
... als de Led van een bluetooth ontvanger constant aan is.
Ik hoop dat deze werkelijk constant aan is. Als deze via pwm wordt aangestuurd of wordt gemultiplext met andere componenten (schakelaars), dan kan het nog wel eens niet goed werken met zo'n simpele programma opzet. Ook bestaat de kans dat het soms wel en soms niet werkt. Je kan dit euvel softwarematig wel oplossen maar vraagt een iets andere aanpak en timing speelt hierbij een belangrijke rol. Hardwarematig voldoet een RC netwerkje. Dat lijkt me in dit geval dan eenvoudiger. Maar misschien heb je geluk en betreft het een LED die echt continu aan is.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De opto die er tussen zit is vrij traag, mogelijk traag genoeg om (eventuele) pwm op te vangen. (desnoods condensatortje oven de opto-transistor zetten)
Rely
Golden Member
Hallo Arco.
Het Hex bestand heb ik met de Pickit nu wel kunnen laden, ik deed wat verkeerd.
Schakeling werkt prima.
Op de input doe ik een C'tje zodat PWM geen rol speelt.
Allen reuze bedankt voor de inzet.
Gerard.