Hallo von einem absoluten Anfänger (kurz vor der Rente).
Im Rahmen meiner (noch) beruflichen Tätigkeit muss (darf)
ich über 150 Kabelbäume (siehe Schaltbild) prüfen. Manuell
mittels Durchgangstester und Voltmeter etwas mühsam.
Diese Aufgabe soll ein Attiny13 übernehmen. Das beigefügte
(einfache und mikrige) Programm würde zwar funktionieren,
aber eine akustische Meldung, 3x schnelles "piepen" pro
Prüfling, wäre von vorteil um nicht ständig die LED's zu
beobachten.Nur wie muss die Schleife dafür aussehen?
Meine Versuche sind kläglich in die "Hose" gegangen. Bei
meinen "Versuchen" war ständig ein "Dauerpiepen" zu hören!
Wer kann mir da weiterhelfen?
1
'Anschlussbelegung des Tiny13:
2
3
'Pin 1: Reset, Widerstand 10k nach Pin 8 (VCC)
4
'Pin 2: PB3, ADC-Eingang ADC3, Messeingang
5
'Pin 3: PB4, ADC-Eingang ADC2, Messeingang
6
'Pin 4: GND, Masse
7
'Pin 5: PB0, LED für "Gut-Meldung", 5,0V
8
'Pin 6: PB1, LED für "Gut-Meldung", Kabel OK
9
'Pin 7: PB2, ADC-Eingang ADC1, Messeingang
10
'Pin 8: VCC, Versorgungsspannung
11
12
13
$regfile = "attiny13.dat"
14
$crystal = 9600000
15
$hwstack = 16
16
$swstack = 16
17
$framesize = 16
18
19
Config Portb.0 = Output ' LED grün = 5,0 V
20
Config Portb.1 = Output ' LED grün = Kabel OK
21
22
23
Dim W As Word
24
Dim U As Word
25
Dim V As Word
26
27
28
Config Adc = Single , Prescaler = Auto , Reference = Avcc
29
30
Do
31
Start Adc
32
33
W = Getadc(1) ' messen des Analogwertes
34
U = Getadc(2) ' messen des Analogwertes
35
V = Getadc(3) ' messen des Analogwertes
36
37
Stop Adc
38
39
'Widerstandsschleifen Messung an 2 Punkten
40
'Wenn die Spannung am ADC 2 mit einer Hysterese
41
'von 200mV zwischen 3,9V und 4,1V beträgt und
42
'am ADC 3 mit einer Hysterese von 200mV
43
'zwischen 1,9V und 2,1V beträgt, dann
44
'soll eine LED an Portb.0 leuchten.
45
46
47
If U > 840 Then 'Spannung > 4,1 V
48
Portb.0 = 0
49
End If
50
51
If V > 430 Then 'Spannung > 2,1 V
52
Portb.0 = 0
53
End If
54
55
If U < 840 And U > 799 And V < 430 And V > 389 Then 'Spannungsprüfung
56
Portb.0 = 1
57
End If
58
59
If U < 799 Then 'Spannung < 3,9V
60
Portb.0 = 0
61
End If
62
63
If V < 389 Then 'Spannung < 1,9V
64
Portb.0 = 0
65
End If
66
67
If W > 251 Then ' Spannung > 5,1 V
68
Portb.1 = 0
69
End If
70
71
If W < 251 And W > 243 Then ' Spannung 4,9 - 5,1 V
Hallo Hartmut,
wo willst Du denn eigentlich raus kommen mit Deinem Piep-Signal?
Du könntest mit dem Sound-Befehl an's Werk gehen:
Config Portb.0 = Output 'Hier mußt Du sehen, welchen Portpin Du nehmen
kannst
Speaker Alias Portb.0
Dim Schleifenzaehler as Byte
If Portb.0 = 1 And Portb.1 = 1 Then
For Schleifenzaehler = 2 to 0 Step -1
Sound Speaker , 165 , 1011
waitms 500
Next Schleifenzaehler
End if
MfG Paul
Hallo Paul,
danke für die schnelle Antwort. Ich benutze keinen Lautsprecher
sondern einen aktiven Signalgeber. Ich habe nun den Portb.5
dafür genommen und folgende Schleife eingegeben. Nun piept es
ständig, wenn die Bedingung erfüllt ist.
Was muss ich machen, damit es, wenn die Bedingung erfüllt ist,
nur 3x "piept" ? Fehlt da noch ein "Merker"?
If Portb.0 = 1 And Portb.1 = 1 Then
For Schleifenzaehler = 2 to 0 Step -1
Portb.5 = 1
Waitms 10
Portb.5 = 0
Waitms 10
Next Schleifenzaehler
End if
MfG Hartmut
>Fehlt da noch ein "Merker"?
Ja, -nur was sollte als Kriterium dienen, um diesen Merker wieder
zurückzusetzen?
So lange das Kabel dransteckt und in Ordnung ist, ist auch die Bedingung
erfüllt.
MfG Paul
> So lange das Kabel dransteckt und in Ordnung ist, ist auch die Bedingung> erfüllt.
In diesem Fall soll es ja auch nur 3x piepen und nicht ständig. Oder
muss das
Prog kpl. umgeschrieben werden?
Ich habe nur das gefährliche Halbwissen....
MfG Hartmut
Hallo,
danke für die Informationen. Ich habe leider keinen Erfolg erzielen
können.
Mein Halbwissen reicht leider nicht aus. Dann werde ich weiter LED's
beobachten. Nochmals Danke für die schnellen Rückmeldungen.
MfG Hartmut
Hallo,
mein Prog läuft.
........
Dim Slz As Byte
Dim Gut As Byte
........
Do
........
If Portb.0 = 1 And Portb.1 = 1 Then
If Gut = 0 Then
Gut = 1
For Slz = 2 To 0 Step -1
Portb.5 = 1
Waitms 8
Portb.5 = 0
Waitms 8
Next Slz
End If
Else
Gut = 0
End If
Eine eigene Frage?
Dieser Thread ist über 12 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.