Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowe sterowanie wentylatorem i silniczkiem

Setesh 21 Sie 2008 10:03 5786 11
  • #1 21 Sie 2008 10:03
    Setesh
    Poziom 10  

    Witam.

    Od razu zaznaczę że, jestem początkujący w elektronice więc nie gryźcie proszę a jak umieściłem w złym miejscu to też wielkie sorki :) Ale do rzeczy :)

    Chciałbym stworzyć własny program do sterowania obrotami wentylatora 120mm, obrotów silniczka oraz płytkę PCB z elementami (czyli nazwijmy to "projekt" :) ). Problem w tym że, nie jestem elektronikiem i nie wiem jakie elementy będą mi potrzebne na PCB więc liczę na łaskawą pomoc z waszej strony:)

    Mały opis :

    Problem programowy :

    Wentylator ma być wyłączony do czasu aż program sam go uruchomi.

    Przy uruchomieniu programu :
    - silniczek ma się włączyć na chwilkę (aby obrócić koło o pewien stopień powiedzmy w "lewo")
    - w tym samym czasie chcę aby zasilanie wentylatora zaczęło wzrastać od 0 do ustalonej przeze mnie w programie wartości (wentylator ma dalej działać na tej wartości chyba że w programie się zmieni).

    Przy zamykaniu programu :
    - silniczek ma się włączyć na chwilkę (aby obrócić koło o pewien stopień ale w "prawo")
    - w tym samym czasie chcę aby zasilanie wentylatora zaczęło spadać od ustalonej przeze mnie w programie wartości do zera (wentylator ma przestać działać).

    Dodam że wiatraczki mają 4 diody LED świecące na niebiesko więc przypuszczam że w chwili spadku/wzrostu zasilania one też zaczną świecić inaczej.



    Problem sprzętowy :

    Nawet nie wiem co napisać bo nie znam się na częściach ale przypuszczam że będzie potrzebne :
    - silniczek :)
    - jakaś pamięć w której będą zapisane instrukcje dla wiatraczka i obrotów wentylatora

    Za brak graficznego projektu przepraszam ale nie wiem jak to narysować aby przedstawić sensownie :(

    O co bym was prosił :

    - O pomoc w stworzeniu elementów sprzętowych (PCB + dodatki na nich) ponieważ z tym sobie nie poradzę.
    - Programowanie : powinienem sobie poradzić o ile podpowiecie mi jaki język, kompilator (pomoce - kody źródłowe, helpy poszukam sam)


    Ogólnie może trochę zamieszałem jakby co to sorki :(

    Na ten "projekt" wpadłem po przeczytaniu artykułu w Chipie : Link

    Będę wdzięczny za pomoc z waszej strony oraz za wyrozumiałość bo to pierwszy taki mój projekcik w którym połączę programowanie i elektronikę :(

    PS : Nie jest to "Ogłoszenie" w stylu"Zróbcie za mnie" chociaż ma dużo z niego ale niektórych rzeczy nie zrobię sam więc liczę na waszą pomoc :(

    0 11
  • #2 21 Sie 2008 11:31
    Duch__
    Poziom 31  

    Napisz coś więcej, co ten silnik ma wykonać. Mam pewne podejrzenia co do tego co ma robić, ale chce najpierw usłyszeć twoją wersję.

    0
  • #3 21 Sie 2008 14:08
    Setesh
    Poziom 10  

    Jak pisałem wyżej -silniczek ma obracać koło o kilka stopni (no może kilkanaście) ale musi być mocny :(

    Odnośnie tego co koło będzie robiło :

    Koło uruchamiane silniczkiem będzie zamykało i otwierało przesłonę (kto ogląda Gwiezdne wrota to już kuma o co chodzi :) )

    Jak na razie robię właśnie przesłonę która jest prawie na ukończeniu i w trybie ręcznym działać będzie ok - teraz pozostaje tylko znaleźć (czyt kupić) odpowiedni silniczek (a musi być dosyć mocny aby końcowe zamykanie doszło do skutku).

    Do tego za przesłoną będzie wiatraczek 120mm który świeci na niebiesko (taki niby efekt wody z G.W. :) ).

    Info dodatkowe :

    Ten problem jest częścią modyfikacji mojej obudowy Big Tower która po prawie 8 latach zaczęła mnie już nudzić (swoim oryginalnym wyglądem :) ) więc będzie malowana sprayem (tematyka kosmos + G.W.)

    0
  • Pomocny post
    #4 21 Sie 2008 23:14
    373827
    Użytkownik usunął konto  
  • #5 22 Sie 2008 01:29
    Setesh
    Poziom 10  

    Skalsiu88 -> Dzięki za informację :)

    Teraz muszę tylko porozgryzać odpowiednie skróty i poczytać trochę a potem do testów jak tylko skończę robić główną fizyczną robotę nad projektem (przesłona) :)

    Dzięki za informację :) ale i tak jeszcze pewnie o coś tu zapytam :)

    0
  • Pomocny post
    #6 22 Sie 2008 10:32
    Duch__
    Poziom 31  

    Jeśli chodzi o PWM to dorzucam Ci 2 programy sterowania PWM za pośrednictwem 2 przycisków w języku BASCOM.

    Code:
    'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM
    
    'Częstotliwość przebiegu PWM ok.  254 Hz - 8 MHz/510/64 'Przycisk SI zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika

    $regfile = "m8def.dat" $crystal = 8000000

    Config Pind.0 = Input
    Config Pind.2 = Input
    Config Pinb.1 = Output
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64
    Dim I As Byte

    S1 Alias Pind.0
    S2 Alias Pind.2

    Set Portd.0

    Set Portd.2

    Pwm1a = 0

    Do
    If S1 = 0 Then

    Incr I

    If I = 0 Then

    I = 255

    End If

    Pwm1a = I

    Waitms 20

    End If

    If S2 = 0 Then

    Decr I
    If I = 255 Then
    I = 0

    End If

    Pwm1a = I

    Waitms 20

    End If

    Loop

    End


    Oraz filmik do tego 1 kodu ze zobrazowaniem jak to działa:






    Code:
    'Program regulujący prędkość obrotową silnika DC 12 V
    
    'Do sterowania wykorzystano sygnał PWM
    'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64
    'Przycisk S1 zwiększa prędkość obrotową silnika
    'Przycisk S2 zmniejsza prędkość obrotową silnika
    '$sim
    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
    'dyrektyw mikrokontrolera
    $crystal = 1000000                                          'informuje kompilator
    'o częstotliwości oscylatora
    'taktującego mikrokontroler
    Config Portb = &B11101011 '
    Config Portd = &B1111111 '
    Portb = &B11101011 ' deklaraowanie
    Portd = &B1111111
    Config Pinb.4 = Input 'linia PB4 jako wejściowa
    Config Pinb.2 = Input 'linia PB2 jako wejściowa
    Config Pinb.3 = Output 'linia PB1 (PC1A) jako wyjściowa
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64 'konfiguracja Timer1 jako
    'generatora sygnału PWM na
    'wyjściu OC1A
    Dim I As Byte 'zmienna, której wartość określa
    'wypełnienie sygnału PWM

    S1 Alias Pinb.4 'przypisanie nazwie Pinb.4
    'nazwy S1
    S2 Alias Pinb.2 'przypisanie nazwie Pinb.2
    'nazwy S2

    Set Portb.4 'dołączenie do linii PB4
    'rezystora podciągającego
    Set Portb.2 'dołączenie do linii PB2
    'rezystora podciągającego
    Pwm1a = 0 'wpisanie wartości początkowej 0
    'wypełnienia sygnału PWM

    Do 'początek nieskończonej pętli
    If S1 = 0 Then 'jeśli przyciśnięty S1, to
    Waitms 5 'opóźnienie dla eliminacji drgań
    'styków
    If S1 = 0 Then 'sprawdzenie ponownie, czy
    'przycisk S1 dalej naciśnięty,
    'jeśli tak, to
    Incr I 'zwiększenie o jeden wartości I
    If I = 0 Then 'jeśli wartość I = 0, to
    I = 255 'wpisanie do I wartości 255
    End If
    Pwm1a = I 'wpisanie wartości I do zmiennej
    'Pwm1a określającej wypełnienie
    'PWM
    Waitms 10 'opóźnienie 20 ms
    End If 'koniec warunków
    End If
    If S2 = 0 Then 'jeśli przyciśnięty S2, to
    Waitms 5 'opóźnienie dla eliminacji drgań
    'styków
    If S2 = 0 Then 'sprawdzenie ponownie, czy
    'przycisk S2 dalej naciśnięty,
    'jeśli tak, to
    Decr I 'zmniejszenie wartości I o jeden
    If I = 255 Then 'jeśli wartość I = 255, to
    I = 0 'zerowanie wartości zmiennej I
    End If
    Pwm1a = I 'wpisanie wartości I do zmiennej
    'Pwm1a określającej wypełnienie
    'PWM
    Waitms 10 'opóźnienie 20 ms
    End If 'koniec warunków
    End If
    Loop 'koniec pętli nieskończonej
    End 'koniec programu


    Miłej nauki.

    0
  • #7 22 Sie 2008 13:43
    Setesh
    Poziom 10  

    Właśnie zgrałem i zainstalowałem sobie Bascom-AVR 1.11.9.0 oraz help Bascom Basic AVR 1.11.7.7 PL, "Mikroprocesorową oślą łączkę" i zaraz pobawię się mniej więcej z tym co chciałbym aby z kodu powstało :)

    Duch__ -> Dziękuję za kody - DUŻY PLUS za ładnie opisany kod - ogólnie myślałem że z tym językiem będę miał większe problemy ale wydaje się że ma prostą składnię patrząc na kody powyżej (oczywiście pozory nieraz mylą :) )

    Z tego co jak na razie w wolnych chwilach wyczytałem to jest kilka wersji ATmega 8 (nie wczytywałem się jeszcze dokładniej w to jaki wybrać).

    Z tego co rozumiem będę potrzebował jakiegoś programatora na kostkę - możecie napisać jaki i gdzie kupić w miarę dobry a nie rogi ?

    Niestety nie programowałem jeszcze mikroprocesorów (to jest mój pierwszy i ogromny projekcik - jak na pierwszy raz :) ) więc życzcie szczęścia :)

    PS - Duch__
    Jakie jeszcze części są potrzebne aby taki komplet zrobić jak na filmiku ?
    - Płytka PCB (jaka nie wiem - standardową jaką dostać można na coś 2.4 oczka czy coś z tego co już kupowałem)
    - kostka (ATmega 8 jak rozumiem)
    - wentylator
    - 2 przyciski (takie już w starym cd-rom'ie miałem ale jak się nazywają nie mam pojęcia)
    - jakiś czarny element na 2 nóżkach - nie mam pojęcia co to i jak się nazywa :(
    i pewnie coś jeszcze

    Oj kiepsko widzę stronę sprzętową i chyba będą "bluzgi" od moderatorów że "żebrze" o informację :(

    0
  • #8 22 Sie 2008 14:35
    Duch__
    Poziom 31  

    Setesh napisał:
    > Dziękuję za kody


    Nie ma za co :D

    Setesh napisał:
    Z tego co jak na razie w wolnych chwilach wyczytałem to jest kilka wersji ATmega 8 (nie wczytywałem się jeszcze dokładniej w to jaki wybrać).


    Na start polecam Ci do tego układu Atmege8 16PU - maksymalnie możesz ją taktować kwarcem 16MHz - zasilanie 5V

    Jeśli by takiej nie mieli w elektroniku to możesz wziąść Atmege8L 8PU - jest to wersja niskonapięciowa która działa od ok 3V (nie pamiętam dokładnie - musiał bym zajrzeć do datasheeta), ale przy 5V też ładnie ruszy z tym że maksymalnie możesz ją taktować w tej wersji kwarcem 8MHz. Do tego dokup jeszcze z 2 podstawki DIP28 pod Atmegę.

    Setesh napisał:
    Z tego co rozumiem będę potrzebował jakiegoś programatora na kostkę - możecie napisać jaki i gdzie kupić w miarę dobry a nie rogi ?


    A po co kupować? Samemu możesz se złożyć za procent tego co byś zapłacił w sklepie internetowym. Tutaj masz LINK ze schematem.

    Setesh napisał:
    Niestety nie programowałem jeszcze mikroprocesorów (to jest mój pierwszy i ogromny projekcik - jak na pierwszy raz :) ) więc życzcie szczęścia :)


    Powodzenia :D

    Setesh napisał:
    PS - Duch__
    Jakie jeszcze części są potrzebne aby taki komplet zrobić jak na filmiku ?
    - Płytka PCB (jaka nie wiem - standardową jaką dostać można na coś 2.4 oczka czy coś z tego co już kupowałem)
    - kostka (ATmega 8 jak rozumiem)
    - wentylator
    - 2 przyciski (takie już w starym cd-rom'ie miałem ale jak się nazywają nie mam pojęcia)
    - jakiś czarny element na 2 nóżkach - nie mam pojęcia co to i jak się nazywa :(
    i pewnie coś jeszcze


    - PCB to już musisz sobie kupić według zapotrzebowania. Jeśli w najbliższym czasie chcesz jeszcze coś składać to coś większego se kup - taniej wyjdzie. Płytka się nazywa "uniwersalna".

    - Atmege8 - patrz co napisałem wyżej

    - Wentylator to według gustu.

    - Te przyciski nazywają się SWITCH -e.

    - Czarny element na 2 nóżkach? Jeśli to to co było widać na filmiku po lewej do góry, to jest to BUZ11, on ma 3 nogi - jest to tranzystor mocy, też Ci się przyda do tego sterowania wentylatorem.

    Jeśli całość ma być wpięta do kompa to wtyczkę MOLEX taką jak się podpina zasilanie w dyskach twardych czy napędach optycznych - przyda się do wyciągnięcia 5V dla Atmegi8 oraz 12V dla wentylatora.

    0
  • #9 24 Sie 2008 09:38
    Setesh
    Poziom 10  

    Niestety złożenie tej wersji programatora nie ma sensu bo nie mam w swojej MoBo złącza LPT :( Asus P5B pozwala mi najwyżej na Com lub USB :(

    Jest możliwość aby jakoś ten programator przerobić na Com lub USB ?

    Jak na razie szukam jakiegoś innego programatora (schematu) który byłby tak ładnie opisany jak ten w linku powyżej :)

    Wie ktoś gdzie można kupić jakiś silny silniczek krokowy 12 V do komputera ? Na necie znalazłem tylko z samochodów z wycieraczek lub czegoś innego ale ten trochę duży się wydaje :( a moja obudowa Codegen 7002-2 nie za bardzo pozwala na umieszczenie go kiedy mam umieszczone w nim podzespoły :(

    0
  • #10 24 Sie 2008 09:43
    snow
    Poziom 28  

    Ta płyta ma LPT. Na USB możesz sobie złożyć USBasp albo USBtiny, ale musiałbyś znaleźć kogoś kto by ci wcześniej zaprogramował atmege albo attiny.

    0
  • #11 24 Sie 2008 10:01
    Setesh
    Poziom 10  

    Ups... no fakt ma LPT :) Nie ma mnie teraz w domu więc nie widze ale na necie widzę że ma :) Nie ma to jak nie przydląda się na tylnią stronę obudowy :)

    ok to problem programatora rozwiązany :)

    A właśnie - a jak rozwiązać problem komunikacji układu na PCB (przez Com) z programem w systemie ? Chcę zrobić program włączający wiatraczki w kompie jak już uruchomi się system ale nie wiem jak połączyć sprzęt z oprogramowaniem :(

    0
  • #12 24 Sie 2008 10:10
    snow
    Poziom 28  

    Co do silniczków krokowych to musiałbyś sobie zbudować sterownik do niego. Napięcie jakim należy zasilić silnik zalezy od obrotów jakie chcesz uzyskać ale przy okazji maleje moment silnika zatem musiałbyś dobrać sobie odpowiedni silnik. Najlepiej zasilać silnik krokowy ze źródła prądowego. Każdy silnik posiada jakiś prąd znamionowy i należy go utrzymywać na stałym poziomie.

    Dodano po 3 [minuty]:

    Do komunikacji potrzebujesz MAX232 i podłączasz od strony sygnałów TTL swój procesor a sygnały EIA-232 (wg. oznaczeń noty MAX232) do portu COM komputera.

    0