PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zu einem Projekt



Schnorry
02.05.2019, 18:34
Hallo liebe Gemeinde,
Zunähst erst einmal zu meiner Person.
Ich bin gelernter RFT- Techniker und im Ruhestand. Kein Programmierer!

Daher suche ich hier jemanden der mir für ein kleines Projekt ein Code schreiben kann.

Um allen Diskussionen von vornherein zu vermeiden, wie z.B. selber schreiben usw. nein ich möchte das nicht mehr erlernen. Es ist für mich ein einmaliges Projekt!

Daher meine Bitte an Euch, welscher netter Mensch kann mich hier unterstützen?

Nun zu mein kleines Projekt:

Zum Ablauf:
Programmstart >> Rel 1 & Rel 2 in Ruhezustand.
Wird der Taster betätigt soll Rel 1 erst bei loslassen des Tasters für kurze Zeit ein Impuls abgeben. Ca. 05 – 1 Sek.
Wird der Taster länger als 5 Sek. betätigt soll Rel 2 anziehen bis zum loslassen des Tasters. Rel 1 soll hierbei keinen Impuls abgeben.

Zur Hardware: ATtiny85 Micro USB Board (Development Digispark Kickstarter) hat nur 6 Anschlüsse A0 – A5 + Stromversorgung & ein Relaismodul LOW – aktiv

34146

Nachtrag:
Ich habe auch schon in anderen Foren nachgefragt.
Dort wollte man mir zwar helfen, doch konnte ich diese Hilfe nicht umsetzen, da ich ja nu mal keine Ahnung von programmieren habe. Und ich möchte es wirklich nicht mehr erlernen.

Schnorry
02.05.2019, 18:50
Hallo Moppi,
das ist für mich kein Problem, ich benutze das Programm „Arduino 1.8.9“ funktioniert super.

White_Fox
02.05.2019, 20:22
Ähm...und das in Hardware festzunageln ist keine Option? Das sind ein paar wenige Teile, absolut kein Hexenwerk.

Schnorry
02.05.2019, 20:38
Ähm...und das in Hardware festzunageln ist keine Option? Das sind ein paar wenige Teile, absolut kein Hexenwerk.


und welche Teile wären das?

HaWe
02.05.2019, 20:52
welche,
nicht welsche ;)

Ceos
03.05.2019, 06:43
da würden 2 555 Timer Bausteine und eine Hand voll Widerstände und Kondensatoren in passender Dimension reichen

das eine wäre eine Einschaltverzögerung (5 Sekunden) und das andere eine Monostabile Kippstufe (1 Sekunde)

beide Funktionen können dann im Verhalten mit jeweils einem Poti leicht angepasst werden

das ganze lässt sich auch bequem auf einer kleinen Lochraster Platine aufbauen und wird kaum größer als die andere Lösung

Schnorry
03.05.2019, 10:04
z.Z. ist das Tiny85 mit dem Relaismodul so verbunden >

Taster >>> P0 HIGH - aktiv
Rel. 1 >>> P1 LOW – aktiv
Rel. 2 >>> P2 LOW – aktiv

- - - Aktualisiert - - -


da würden 2 555 Timer Bausteine und eine Hand voll Widerstände und Kondensatoren in passender Dimension reichen

das eine wäre eine Einschaltverzögerung (5 Sekunden) und das andere eine Monostabile Kippstufe (1 Sekunde)

beide Funktionen können dann im Verhalten mit jeweils einem Poti leicht angepasst werden

das ganze lässt sich auch bequem auf einer kleinen Lochraster Platine aufbauen und wird kaum größer als die andere Lösung


Das mit die Timer (NE 555) war mein erster Gedanke. Dann hat man mir eingeredet das mit den Tiny85 einfacher geht. Sollte das nicht werden, komme ich darauf zurück.

Ceos
03.05.2019, 11:04
Einfacher ist die Frage des Standpunkt, wenn einem analoger Kram und löten näher liegt als sich mit Programmierung zu beschäftigen würde ich es als falsch betrachten :)

Schnorry
03.05.2019, 11:47
@ Moppi
Mach dir mal über das Relaismodul keine Gedanken es schaltet einfach auf HIGH sobald an Pin IN1 / IN2 ein LOW Signal anliegt ( Optokoppler getrennt)

https://www.ebay.de/itm/2-Kanal-Relais-Modul-5V-Optokoppler-Relaiskarte-Relaisplatine-Arduino-230V/371636319628?hash=item568740358c:g:L9oAAOSw5LZctG1 Z

Schnorry
03.05.2019, 18:54
:( sorry meinst du so :confused:

const int buttonPin = 0; // the number of the pushbutton pin
const int Rel1 = 1; // the number of the Relais1 pin
const int Rel2 = 2; // the number of the Relais2 pin

HaWe
03.05.2019, 19:20
const int buttonPin = 0; // the number of the pushbutton pin
const int Rel1 = 1; // the number of the Relais1 pin
const int Rel2 = 2; // the number of the Relais2 pin

das ist aber seltsam:
Pins 0+1 werden üblicherweise für Serial (UART) verwendet - das würde ich also nicht verwenden....
besser du nimmst z.B. Pins 2,3 und 4.
Oder z.B. 10, 11 und 12 ...

außerdem brauchst du keine const int verwenden, int oder byte reicht.

HaWe
03.05.2019, 19:59
@schnorry

Nein, ich meine so:



#define Taster 1 //Pin-Nummer wo Taster angeschlossen
#define Relais1 2 //Pin-Nummer wo Relais 1 angeschlossen
#define Relais2 3 //Pin-Nummer wo Relais 2 angeschlossen




Gesamter Quelltext weiter vorne im Thread: https://www.roboternetz.de/community/threads/73376-Hilfe-zu-einem-Projekt?p=651850&viewfull=1#post651850



MfG

ob int oder #define: das kommt aufs gleiche raus.
aber dann eben eher

#define Taster 10
#define Relais1 11
#define Relais2 12

White_Fox
03.05.2019, 20:57
Das mit die Timer (NE 555) war mein erster Gedanke. Dann hat man mir eingeredet das mit den Tiny85 einfacher geht. Sollte das nicht werden, komme ich darauf zurück.
Es gibt kein "Das geht so einfacher", wer so redet denkt meist schon recht eindimensional. Die Frage lautet: Was geht für DICH einfacher? Diesem Thread nach zu urteilen ist ein Mikrocontroller da definitiv raus. Du siehst ja selber. Wer auch immer dir das mit dem Tiny eingeredet hat: Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel. Darüber kann derjenige mal nachdenken.

Außerdem: Auch wenn es rein finanziell betrachtet auch eine billige Lösung ist, so ist ein Mikrocontroller hier mit großem Geschütz auf Kleinvögel geschossen. Selbst so ein kleiner Tiny kann so viel mehr, es ist doch abartig zu sehen wie der sich langweilt. Und dann ist ja nicht nur der Tiny da, sondern dann will der auch beschaltet werden.



und welche Teile wären das?
NE555 ist schonmal ein Ansatz. Möglich wäre auch ein Oszillator (gibt es auch als fertige Teile) und ein oder zwei Zähler. Sind noch aus der Zeit bekannt als 74er modern waren, werden aber auch heute noch genutzt und sogar in sehr modernen Bauformen hergestellt. Einen Zähler kannst du mit dem Oszillatorsignal füttern, dann liefert dir der erste Ausgang die Oszillatorfrequenz, der zweite Ausgang die halbe, der dritte Ausgang ein Viertel, und der vierte Ausgang ein Achtel der Oszillatorfrequenz, usw. Es gibt Oszillatoren mit 36,672kHz (oder so eine ähnlich krumme Zahl, bin grad zu faul zum Rechnen), da hast du nach 16 Ausgängen exakt eine Sekunde. Ein normaler Zähler hat oft acht solcher Ausgänge.
Und wenn es ganz schlimm billig sein soll: die gute alte RC-Schaltung. Einfach einen Kondensator über einen Widerstand laden und die Spannung mit einem anderen festen Wert (z.B. über ein Poti eingestellt) mittels Komparator vergleichen.
Alles recht einfach, kein Hexenwerk, und einfach zu verstehen und umzusetzen.

Und dann gibt es halt noch logische UND und ODER-Gatter und Flipflops. Aber ich denke, als RFT-Techniker müßtest du doch alles kennen, was ich bisher aufgezählt habe.


Ansonsten: Vergiß das elektronische Geraffel, das Ganze ist auch mit einfachen Relais sehr gut umsetzbar. Es gibt Relais mit eingebauter Anzugs- und Abfallverzögerung, und was eine Selbsthaltung ist weißt du, so schätze ich, auch. Da werden vielleicht vier oder fünf Relais nötig...wenn überhaupt.

Für den Tiny sehe ich, wenn ich so darüber nachdenke, überhaupt keinen Grund den einzusetzen, für dich ist das die schlechteste Lösung von allen. Du mußt dich mit Zeug auseinandersetzen was du eigentlich nicht willst, um dann eine Lösung zu haben die du weder hinreichend verstehst noch selbständig reparieren kannst. Und das alles, ohne das ich einen Vorteil gegen analoge Elektronik oder gar Klappertechnik erkennen kann.

Schnorry
03.05.2019, 22:11
Okay Leute danke für Tipps ich werde darüber am WE nachdenken.

Schnorry
04.05.2019, 11:04
Hallo Leute,
Es wurde eine Lösung gefunden.
Ich möchte mich hier bei allen Usern bedanken für die Zahlreichen Tips und Lösungsvorschläge. DANKE

White_Fox
04.05.2019, 11:58
Und du magst uns nicht verraten, was du dir nun ausgedacht hast?

Schnorry
05.05.2019, 20:20
Ja klar verrate ich euch die Lösung. Wurde mir in ein Nachbarforum geschrieben, Funktioniert perfekt!
>>> Hinweis von Autor!>>> Dieses Programm ist öffentlich und zur freien Verfügung. Wer mein Geschenk in irgendeiner Form (Geld, Lächeln, Tierfutter für das Tierheim) weitergeben möchte, darf dies gerne tun, denn ich glaube an das Gute im Menschen.

/*
ATMEL ATtiny85

+-\/-+
Reset 1| |8 Vcc
Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1
Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1
GND 4| |5 PB0 (D 0) pwm0
+----+

Programmstart >> Rel 1 & Rel 2 in Ruhezustand.
Wird der Taster betätigt soll Rel 1 erst bei loslassen des Tasters für kurze Zeit ein Impuls abgeben. Ca. 05 - 1 Sek.
Wird der Taster länger als 5 Sek. betätigt soll Rel 2 anziehen bis zum loslassen des Tasters. Rel 1 soll hierbei keinen Impuls abgeben.

Taster schaltet gegen GND, also gedrückt = LOW
Relais schalten aktiv LOW
*/
const unsigned long relaisimpuls = 1000; // in Millisekunden, ggf. anpassen
const unsigned long tastenintervall = 5000; // in Millisekunden
const byte taster = 2; // D2 des ATtiny85
const byte relais1 = 3; // D3 des ATtiny85
const byte relais2 = 4; // D4 des ATtiny85
const unsigned long debounceDelay = 50;
unsigned long jetzt, vorhin, tasterMillis;
bool altZustand, aktZustand;
byte zustand = 1;

void setup()
{
digitalWrite(relais1, HIGH);
digitalWrite(relais2, HIGH);
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);
pinMode(taster, INPUT_PULLUP);
aktZustand = digitalRead(taster);
altZustand = aktZustand;
}

void loop()
{
jetzt = millis();
altZustand = aktZustand;
if (jetzt - tasterMillis >= debounceDelay) {
aktZustand = digitalRead(taster);
if (altZustand != aktZustand) tasterMillis = jetzt;
}
switch (zustand)
{
case 1:
if (altZustand && !aktZustand) {
vorhin = jetzt;
zustand = 2;
}
break;
case 2:
if (!altZustand && aktZustand) {
vorhin = jetzt;
zustand = 3;
digitalWrite(relais1, LOW);
}
if (jetzt - vorhin >= tastenintervall) {
zustand = 11;
digitalWrite(relais2, LOW);
}
break;
case 3:
if (jetzt - vorhin >= relaisimpuls) {
zustand = 1;
digitalWrite(relais1, HIGH);
}
break;
case 11:
if (!altZustand && aktZustand) {
zustand = 1;
digitalWrite(relais2, HIGH);
}
break;
}
}