Hallo, ich suche ein Sender / Empfängerpaar das den Zustand eines Schalters "in Dauerschleife" überträgt: -Also einfach ein Sender der dauerhaft sendet sobald er mit Strom versorgt wird. -Und ein Empfänger der einen Ausgang geschaltet hält solange er das Signal empfängt. -5m Reichweite sind völlig ausreichend. -Zuverlässig eingehaltene Latenz von 1ms. -Legales Frequenzband, möglichst klein, preiswert, Fertigmodul und geringer Stromverbrauch. Vermutlich sehe ich den Wald vor lauter Bäumen nicht, doch alles was ich bisher gefunden habe sind jede Menge Module die per SPI oder UART Schnittstelle gefüttert werden wollen und Garagentorsender die den Tastendruck 1x senden, den Zustand aber nicht in Dauerschleife übertragen. Die Anwendung ist einen 3D Taster für CNC Fräsen kabellos zu machen: -Wird er aus seinem Halter genommen schließt ein Taster automatisch den Stromkreis zur Batterie und er beginnt zu senden. -Berührt der 3D Taster das Werkstück unterbricht er den Stromkreis, Sender und Empfänger schalten ab und die Steuerung erkennt die Berührung. Das Dauersignal ist wichtig, denn wenn es nur ein kurzes Tastsignal a la Garagentorsender ist fährt die Maschine einen Crash falls die Batterie leer ist oder das Signal nicht empfangen wurde. Ist beim Dauersignal die Batterie leer oder der Empfang gestört ist das leicht zu erkennen und nicht weiter problematisch. Wichtig ist nur eine kurze und nicht zu stark schwankende Latenz um den exakten Schaltzeitpunkt korrekt zu erkennen. Christian
Eigentlich hätte ich ja gesagt schau dir Mal den JDY-40 an. In Mode 4 geht das so in die Richtung glaube ich. Evtl noch irgendwo ein NOT und gut. Latenz müsste man messen. Die 1ms Forderung von dir ist aber schon sehr Echtzeit würde ich sagen. Das könnte allgemein interessant werden. Aber essentiell wichtig ist bei dir ja die Ausfallerkennung damit deine Maschine nicht crasht. So wie ich das sehe überträgt der JDY-40 nur Änderungen. Was ihn damit schon wieder disqualifiziert. Im einfachsten Fall wäre es eigentlich nur ein Modulator/Demodulator den du brauchst (z.B. OOK o.a). Frequenz da, Maschine darf weiter fahren. Frequenz weg, Maschine bleibt stehen bzw. Signal für Taster gedruckt/Referenz erreicht. Aber auch da ist die Frage: was passiert wenn dein eigentlicher Sender abschaltet, es aber einen Störer auf der selben Frequenz gibt was deine Maschine weiter laufen lässt? Ich glaub richtig zuverlässig/sicher wird das erst wenn Daten übertragen werden.
Nennt sich IR, einfach IR Sender und TSOP1738 . Hier ein Beispielcode mit 1.2Mhz F_CPU . Die Kontaktprobe hat zwei Reed-Kontakte, Schliesser, und zwei Magnete. Ein Reed-Kontakt ist im Halter, als CONTACT im Code, und eins ist in der Kontaktprobe um die Batterie freizugeben. Hier ein Auszug aus meinem Code fuer eine Kontaktprobe im Wecheslhalter. Datenuebertragung geht mit 2400bps und einem Messinterval von ca 1ms mit uebertragung von Batt_low der CR2430 Zelle.
1 | #include <util/delay_basic.h> |
2 | #define dly() _delay_loop_1(165)
|
3 | #define inp(p) PINB&_BV(p)
|
4 | #define tx_hi() (PINB|=_BV(3))
|
5 | #define tx_lo() (PINB&=~_BV(3))
|
6 | #define nop() asm("nop")
|
7 | #define nop2() do { nop(); nop(); } while(0)
|
8 | #define tx_1() (tx_hi(),dly())
|
9 | #define tx_0() (tx_lo(),dly())
|
10 | #define tx_on() tx_1(),tx_0()
|
11 | #define tx_off() tx_0(),tx_1()
|
12 | #define tx_bat(n) (tx_##n(),batt?tx_0():tx_1())
|
13 | uint8_t batt=getVcc()>=2800; |
14 | for(;;) { |
15 | tx_1(); nop2(); |
16 | if(inp(2)) tx_off(); else tx_on(); |
17 | if(inp(2)) tx_off(); else tx_on(); |
18 | if(inp(2)) tx_batt(0); else tx_batt(1); |
19 | if(inp(2)) tx_off(); else tx_on(); |
20 | tx_0(); nop2(); |
21 | }
|
22 | |
23 | ///////////////////////////////////////////////////////////// Empfang
|
24 | #define dly_() _delay_loop_1(83)
|
25 | #define dly_1() _delay_loop_1(166)
|
26 | #define out(x,y) ((y)?PORTB|=_BV(x):PORTB&=~_BV(x))
|
27 | #define IN_USE 1 // reed contact
|
28 | #define IR 3
|
29 | #define CONTACT 4
|
30 | #define E_STOP 2
|
31 | #define E_STOP_OK 1
|
32 | #define BATT_LO 5
|
33 | #if 0
|
34 | #define INV ~
|
35 | #else
|
36 | #define INV
|
37 | #endif
|
38 | |
39 | uint8_t i=0; |
40 | for(;;) { |
41 | out(CONTACT,INV -1); |
42 | out(E_STOP,E_STOP_OK); |
43 | for(;~inp(IN_USE);) { // reed contact off |
44 | while(~inp(IR)) if(!++i) out(E_STOP,!E_STOP_OK) ; // wait for start bit |
45 | dly_(); if(~inp(IR)) continue; out(E_STOP,E_STOP_OK); |
46 | dly_1(); out(CONTACT,INV inp(IR)); dly_1(); |
47 | dly_1(); out(CONTACT,INV inp(IR)); dly_1(); |
48 | dly_1(); out(CONTACT,INV inp(IR)); dly_1(); out(BATT_LO, inp(IR)); |
49 | dly_1(); out(CONTACT,INV inp(IR)); dly_1(); |
50 | dly_(); i=0; |
51 | }}
|
52 | ///////////////////////////////////////////////////
|
53 | uint16_t avgAdc(uint8_t avg, uint8_t shift) { |
54 | uint16_t result=0; |
55 | while(avg--) { |
56 | ADCSRA |= _BV(ADSC); // Start conversion |
57 | while (bit_is_set(ADCSRA,ADSC)); // measuring |
58 | result+=ADC; |
59 | }
|
60 | while(shift--) result>>=1; |
61 | return result; |
62 | }
|
63 | uint16_t getVcc() { |
64 | ADMUX = _BV(MUX3) | _BV(MUX2); |
65 | dly();dly(); dly(); |
66 | dly();dly(); dly(); |
67 | avgAdc(16,0); |
68 | return 1125300UL / avgAdc(16,4); // Calculate Vcc (in mV); |
69 | // 1125300 = 1.1*1023*1000
|
70 | }
|
Christian K. schrieb: > -Also einfach ein Sender der dauerhaft sendet sobald er mit Strom > versorgt wird. Besitzt du dafür eine passende Frequenzzuteilung? Sonst müsstest du dich dazu z.B. erstmal bei der BNA schlau machen. In den SRD-Frequenzbändern ist z.T. der Arbeitszyklus (Sendung zu Sendepause) stark beschränkt und du musst jederzeit mit Störungen durch andere Nutzer rechnen (z.T. recht leistungsstark). https://www.bundesnetzagentur.de/DE/Fachthemen/Telekommunikation/Frequenzen/Grundlagen/Frequenzplan/frequenzplan-node.html https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/FunkanlagenGeringerReichweite/2018_05_SRD_pdf.pdf Wenn du LED-Beleuchtung im Raum hast, könntest du die Information durch Modulation der Raumbeleuchtung übertragen.
:
Bearbeitet durch User
Christian K. schrieb: > -Legales Frequenzband, möglichst klein, preiswert, Fertigmodul und > geringer Stromverbrauch. "Legal" kann man mit entsprechender Lizenz überall senden. Du willst irgendein ISM Band "missbrauchen" (zu lesen: ursprünglich war dort kein funkdienst angedacht, aber auch nicht verboten, darum dat man angefangen in diesen lizenzfreien bändern WLAN&co zu etablieren). Allein wegen der Latenz und der komplexität würde ich das auch optisch machen. Allein die prüfungen, falls du das Kommerzialisierung willst dürften eine optische übertragung rechtfertigen. So ein 36/40khz Modul kostet ja quasi nichts... 73
Schade, andererseits beruhigend dass ich nicht völlig zu doof war ein entsprechendes Fertigmodul zu finden. Dann wird es wohl doch auf IR rauslaufen. Ist im Maschinenumfeld zwar wegen der Verschmutzungsproblematik nicht optimal aber die Steuerung kann es ja erkennen wenn nach der Herausnahme des 3D Tasters kein gutes IR Signal ankommt. Und der Empfänger hätte bei Montage direkt auf der Spindel auch eine ständige direkte Sichtverbindung. Ein anderer Gedanke war Ultraschall. Das hatte ich eigentlich wegen der Schallgeschwindigkeit verworfen denn alleine dadurch bekomme ich auf einen Meter Distanz schon 3ms Latenz. Wenn der Empfänger allerdings auf der Spindel mitfährt hat er immer denselben Abstand von wenigen cm zum Sender und kann vielleicht auch bei wasserdichtem Einbau in ein Gehäuse die kurze Strecke überwinden. Werde ich wohl mal ausprobieren müssen - eine verschmutzungsresistente Lösung wäre schon schick.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.