Sterownik FUCHS

Dział Do it yourself - Zrób to sam - prezentacja urządzeń wszelkiego rodzaju wykonanych we własnym zakresie
Awatar użytkownika
Pawloosw
Kierowca
Posty: 9750
Rejestracja: 01 sie 2013, 22:06
Has thanked: 15 times
Been thanked: 10 times

Re: Sterownik FUCHS

Post autor: Pawloosw »

Tego sie obawiałem i zastosowałem inne, ciasniejsze kabelki niz te od plytki prototypowej, ale faktycznie lepiej bedzie chyba wlutowac te przewody na stałe zwłaszcza , że drgania bedą konkretne przy okładaniu złomu chwytakiem. :he

Awatar użytkownika
Sławek
Site Admin
Posty: 14530
Rejestracja: 21 gru 2011, 22:12
Has thanked: 15 times
Been thanked: 21 times

Re: Sterownik FUCHS

Post autor: Sławek »

Zwróć uwagę na konfigurację :)
zrzut1.png
  1. /*
  2.  
  3.  
  4.  
  5. STEROWANIE ZMIANA BIEGUNOWOSCI SILNIKA
  6.  
  7.  
  8.  
  9. Tabela prawdy :
  10.  
  11.  
  12.  
  13. LOW = 0V, HIGH = 5V
  14.  
  15.  
  16.  
  17. PRZEKAZNIK1 = LOW, PRZEKAZNIK2 = HIGH - obroty w jedna strone
  18.  
  19. PRZEKAZNIK1 = HIGH, PRZEKAZNIK2 = LOW - obroty w przeciwna strone
  20.  
  21. PRZEKAZNIK1 = HIGH, PRZEKAZNIK2 = HIGH - hamulec, na wyjsciu silnika oba bieguny ujemne
  22.  
  23. PRZEKAZNIK1 = LOW, PRZEKAZNIK2 = LOW - stan niezalecany, dodatnie bieguny na wyjsciu, w przypadku dotkniecia obudowy silnika do masy moze nastapic zwarcie
  24.  
  25.  
  26.  
  27. */
  28.  
  29.  
  30.  
  31. #include <Arduino.h>
  32.  
  33.  
  34.  
  35.  
  36.  
  37. #define PRZEKAZNIK1 2       // nr pin arduino dla sterowania przekaznikiem 1
  38.  
  39. #define PRZEKAZNIK2 3       // nr pin arduino dla sterowania przekaznikiem 2
  40.  
  41. #define PRZYCISK    4       // nr pin arduino dla przycisku
  42.  
  43.  
  44.  
  45. #define CZAS_ON     500     // czas dzialania silownika w ms - 1s = 1000ms
  46.  
  47. #define PAUZA       1000    // pauza w ms pomiędzy zmianą kierunku
  48.  
  49. #define LOGIKA      0       // gdy przekazniki sa zalaczane stanem niskim nalezy ustawic 0, w przypadky gdy wysokim - 1
  50.  
  51. #define PRZYCISK_CZAS 50    // dlugosc wcisniecia przycisku w ms aby zadzialala zmiana kierunku, im krótszy tym mogą powstawac drgania styku i krotkie przelaczanie przekaznika
  52.  
  53.  
  54.  
  55. // zmienne
  56.  
  57. byte stan;
  58.  
  59. int przyciskStatus;
  60.  
  61. int ostatniPrzyciskStatus = HIGH;
  62.  
  63. long ostatniPrzyciskCzas = 0;
  64.  
  65.        
  66.  
  67.  
  68.  
  69.  
  70.  
  71. void setup() {
  72.  
  73.    
  74.  
  75.    
  76.  
  77.     pinMode(PRZEKAZNIK1, OUTPUT);           // ustawienia pinu jako wyjscie
  78.  
  79.     pinMode(PRZEKAZNIK2, OUTPUT);           // ustawienia pinu jako wyjscie
  80.  
  81.     pinMode(PRZYCISK, INPUT_PULLUP);        // ustawienia pinu jako wejscie podciagniete do VCC
  82.  
  83.    
  84.  
  85.     if(LOGIKA == 1) {                   // ustawienie stanow rozlaczonych na przekaznikach przy uruchomieniu arduino
  86.  
  87.         digitalWrite(PRZEKAZNIK1, LOW);
  88.  
  89.         digitalWrite(PRZEKAZNIK2, LOW);
  90.  
  91.     } else if(LOGIKA == 0) {
  92.  
  93.         digitalWrite(PRZEKAZNIK1, HIGH);
  94.  
  95.         digitalWrite(PRZEKAZNIK2, HIGH);
  96.  
  97.     }
  98.  
  99.    
  100.  
  101. }
  102.  
  103.  
  104.  
  105. void loop() {
  106.  
  107.  
  108.  
  109.  
  110.  
  111.     boolean wcisniety = przycisk();
  112.  
  113.     if (wcisniety) {
  114.  
  115.             if(LOGIKA == 0) {
  116.  
  117.                 digitalWrite(PRZEKAZNIK2, HIGH);    // przekaznik 2 wylaczony
  118.  
  119.                 delay(10);
  120.  
  121.                 digitalWrite(PRZEKAZNIK1, LOW);     // przekaznik 1 wlaczony
  122.  
  123.                 delay(CZAS_ON);
  124.  
  125.                 stop();
  126.  
  127.                 delay(PAUZA);
  128.  
  129.                 digitalWrite(PRZEKAZNIK1, HIGH);    // przekaznik 1 wylaczony
  130.  
  131.                 delay(10);
  132.  
  133.                 digitalWrite(PRZEKAZNIK2, LOW);     // przekaznik 2 wlaczony
  134.  
  135.                 delay(CZAS_ON);
  136.  
  137.                 stop();
  138.  
  139.             } else if(LOGIKA == 1) {
  140.  
  141.                 digitalWrite(PRZEKAZNIK2, LOW);     // przekaznik 2 wylaczony
  142.  
  143.                 delay(10);
  144.  
  145.                 digitalWrite(PRZEKAZNIK1, HIGH);    // przekaznik 1 wlaczony
  146.  
  147.                 delay(CZAS_ON);
  148.  
  149.                 stop();
  150.  
  151.                 delay(PAUZA);
  152.  
  153.                 digitalWrite(PRZEKAZNIK1, LOW);     // przekaznik 1 wylaczony
  154.  
  155.                 delay(10);
  156.  
  157.                 digitalWrite(PRZEKAZNIK2, HIGH);    // przekaznik 2 wlaczony
  158.  
  159.                 delay(CZAS_ON);
  160.  
  161.                 stop();
  162.  
  163.             }
  164.  
  165.     }
  166.  
  167.    
  168.  
  169.     bezpiecznik();
  170.  
  171. }
  172.  
  173.  
  174.  
  175.  
  176.  
  177. // procedura wylaczenia przekaznikow
  178.  
  179. void stop() {
  180.  
  181.  
  182.  
  183.     if(LOGIKA == 0) {
  184.  
  185.             digitalWrite(PRZEKAZNIK1, HIGH);
  186.  
  187.             digitalWrite(PRZEKAZNIK2, HIGH);
  188.  
  189.         } else if(LOGIKA == 1) {
  190.  
  191.             digitalWrite(PRZEKAZNIK1, LOW);
  192.  
  193.             digitalWrite(PRZEKAZNIK2, LOW);
  194.  
  195.     }
  196.  
  197. }
  198.  
  199.  
  200.  
  201. // procedura wylaczenia przekaznikow w przypadku wykrycia takich samych stanow wlaczajacych na obu przekaznikach
  202.  
  203. void bezpiecznik() {
  204.  
  205.  
  206.  
  207.     if(LOGIKA == 0) {
  208.  
  209.         if(digitalRead(PRZEKAZNIK1) == LOW && PRZEKAZNIK2 == LOW ) {
  210.  
  211.             digitalWrite(PRZEKAZNIK1, HIGH);
  212.  
  213.             digitalWrite(PRZEKAZNIK2, HIGH);
  214.  
  215.         }
  216.  
  217.     } else if(LOGIKA == 1) {
  218.  
  219.         if(digitalRead(PRZEKAZNIK1) == HIGH && PRZEKAZNIK2 == HIGH ) {
  220.  
  221.             digitalWrite(PRZEKAZNIK1, LOW);
  222.  
  223.             digitalWrite(PRZEKAZNIK2, LOW);
  224.  
  225.         }
  226.  
  227.  
  228.  
  229.     }
  230.  
  231. }
  232.  
  233.  
  234.  
  235.  
  236.  
  237. // procedura obslugi przycisku
  238.  
  239. boolean przycisk() {
  240.  
  241.  
  242.  
  243.  
  244.  
  245.     boolean zwrot = false;
  246.  
  247.     int reading = digitalRead(PRZYCISK);
  248.  
  249.     if (reading != ostatniPrzyciskStatus) {
  250.  
  251.         ostatniPrzyciskStatus = millis();
  252.  
  253.     }
  254.  
  255.     if ((millis() - ostatniPrzyciskCzas) > PRZYCISK_CZAS) {
  256.  
  257.         if (reading != przyciskStatus) {
  258.  
  259.             przyciskStatus = reading;
  260.  
  261.             if (przyciskStatus == LOW) {
  262.  
  263.                 zwrot = true;
  264.  
  265.             }
  266.  
  267.         }
  268.  
  269.     }
  270.  
  271.     ostatniPrzyciskStatus = reading;
  272.  
  273.     return zwrot;
  274.  
  275. }
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
griszaa
Złomiarz
Posty: 10987
Rejestracja: 22 sie 2012, 04:52
Been thanked: 2 times

Re: Sterownik FUCHS

Post autor: griszaa »

Amen :he

Awatar użytkownika
Pawloosw
Kierowca
Posty: 9750
Rejestracja: 01 sie 2013, 22:06
Has thanked: 15 times
Been thanked: 10 times

Re: Sterownik FUCHS

Post autor: Pawloosw »

Oki, dzięki Sławek. :friends
Przysiąde do tematu jutro, teraz lece na chrzciny.

Awatar użytkownika
Maciek
Moderator
Posty: 3940
Rejestracja: 07 sty 2012, 21:21

Re: Sterownik FUCHS

Post autor: Maciek »

Pawloosw pisze: teraz lece na chrzciny.
Tam gdzieś widziałem ostrzeżenie :)

Uważajcie na nową metodę oszustwa „na chrzestnych”!
Oszuści proszą o podanie dziecka do chrztu, a 9 lat później musicie kupić quada.


:P

Awatar użytkownika
griszaa
Złomiarz
Posty: 10987
Rejestracja: 22 sie 2012, 04:52
Been thanked: 2 times

Re: Sterownik FUCHS

Post autor: griszaa »

:up :he


Rozumiem ze jak juz wszystko uruchomisz toskrecisz jakiegos filma zeby pokaza ... WTF i OCB ... :lol

Awatar użytkownika
Pawloosw
Kierowca
Posty: 9750
Rejestracja: 01 sie 2013, 22:06
Has thanked: 15 times
Been thanked: 10 times

Re: Sterownik FUCHS

Post autor: Pawloosw »

Chrzciny u brachola wiec raczej bez wałka :D

Awatar użytkownika
Sławek
Site Admin
Posty: 14530
Rejestracja: 21 gru 2011, 22:12
Has thanked: 15 times
Been thanked: 21 times

Re: Sterownik FUCHS

Post autor: Sławek »

I jak tam ? Działa czy nie ? :)

Awatar użytkownika
Pawloosw
Kierowca
Posty: 9750
Rejestracja: 01 sie 2013, 22:06
Has thanked: 15 times
Been thanked: 10 times

Re: Sterownik FUCHS

Post autor: Pawloosw »

W planach mam dzisiaj po pracy przysiąść do programowania. Wieczorem chwila prawdy. :D

Awatar użytkownika
Pawloosw
Kierowca
Posty: 9750
Rejestracja: 01 sie 2013, 22:06
Has thanked: 15 times
Been thanked: 10 times

Re: Sterownik FUCHS

Post autor: Pawloosw »

Sławku, ostatnio tyle na głowie, że zapomniałem napisać. Wgrałem ten nowy kod bez żadnych zmian i wszystko dzała jak należy. Pora zamontować ardu i przetestować na żywym organiźmie. :he

Raz jeszcze dziękuję. :friends

ODPOWIEDZ