Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 lis 2024, o 02:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 11 lis 2013, o 16:46 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Witam. Skonstruowałem układ do sterowania fazowego (detektor zera sieci + triak). Układ działa tak jak powinien: po podaniu stanu wysokiego na bramkę triaka żarówka świeci, detektor po odpowiednim napisaniu programu zlicza wszystkie przejścia przez zero. Problem pojawia się, kiedy trzeba sprzężyć programowo obie części.
O takich sterownikach naczytałem się w internecie bardzo dużo choć nie znalazłem jasnej odpowiedzi na swoje pytania. Poszukiwania takiego rozwiązania na arduino także nie przyniosło skutku, same materiały związane z timerami są strasznie ubogie, dlatego ostatecznie postanowiłem zwrócić się o pomoc na forum. Pytania brzmią następująco:
- jakiej bliblioteki użyć do timerów, jak je skonfigurować (jakiś rozsądny poradnik ich obsługi)
- jak powinien wyglądać schemat w samym programie (w jakich pętlach, kiedy włączam/wyłączam triaka, kiedy timery itd.)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 16:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ale w czym piszesz i na czym ?? GCC, Arduino ??

pokaż co napisałeś

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 17:10 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Używam arduino uno. Z tego co napisałem to sama detekcja zera (wyzwalanie zboczem opadającym) no i test triaka - stan wysoki - żarówka świeci. Żaden wyczyn, chyba nie ma sensu nawet tego pokazywać, bo do połączenia tego w całość i tak trzeba zrobić prawie wszystko od nowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 17:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

no nie całkiem
wystarczy dotychczasowe rzeczy przerzucić do funkcji i napisac kawałek kodu w pętli głównej

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 17:33 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Co konkretne wkleić? Detekcję zera?
Dodam tylko, że docelowo ma to być najprostszy sterownik do wytrawiarki - regulator mocy do grzałki uzależniony od czujnika emperatury, napowietrzaczem włącz/wyłącz i najprostszym wyświetlaczem.

Edit: mój program póki co obsługuje dwa czujniki temperatury ds18b20, wyświetlacz 2x16 (wskazania z czujników temp.), obsługę dwóch microswitchy 3-funkcyjnych (biblioteka OneButton - jeden klik, dwa kliki, przytrzymanie) no i ewentualne zliczanie impulsów na zasadzie 50 zbocz opadających to 1 sekunda.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 18:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

no to przyjacielu nie ma problemu z tym żadnego

zapewne do pomiaru temperatury będziesz korzystał z dallasa np DS18B20
więc użyj tej biblioteki :
https://github.com/milesburton/Arduino- ... ol-Library

a jak chcesz używać odczytu z analogowego czujnika np LM35 to można zrobić np tak :

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To najprostsza możliwa forma sterowania przekaźnikiem :) w ramach temp zadanej oczywiście tak mozna rozwinąć to najprościej ...

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 18:42 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Czyli co wkleić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 18:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

uzupełniłem wpis wyżej zanim odpisałeś zerknij sobie
oczywiście zakładam że wiesz jak podłączyć do duino przekaźnik ?? choć teraz do testu wystarczy ci dioda led będziesz widział kiedy się włączy kiedy wyłączy , a zastąpić zawsze można tranzystorem do sterowania przekaźnikiem lub
optotriakiem np CNY70

przykładowo :

Obrazek

gdzie pin MCU na schemacie to nasz pin D7 w arduino (relay)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 19:09 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Problem w tym, że nie chce działania binarnego włącz/wyłącz (do tego nie jest potrzebna mi detekcja zera sieci) a chce uzyskać możliwość płynnej regulacji. Tu potrzebne jest użycie timera i to jest mój problem. Przypominam, że chodzi o PRĄD PRZEMIENNY.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 19:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

nie bardzo rozumiem o co ci chodzi ....
jak chcesz sterować pwmem grzałką to się trochę napocisz
niemniej w dalszym ciągu nie mam pojęcia co zrobiłeś co chcesz zrobić , co wiesz a czego nie
wiec próbuję celować jakoś .... a wróżką nie jestem .... a jak już to kiepską

:P

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 19:24 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Może ta grafika przybliży Ci mój zamysł:
Obrazek

A tu kawałek pożyczonego schematu według którego zrealizowałem układy:
ObrazekObrazek

Dla ułatwienia mogę ewentualnie wstawić cały schemat.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 20:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

gdybym budował ściemniacz to oświetlenia na triaku zabrał bym się tak za niego

przejście przez zero jest banalne jak tak bardzo chcesz np może wyglądać tak:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


gdzie załączanie triaka będzie wyglądać tak :

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a co za tym idzie kiedy mamy dwie już funkcje wyrycia zera i sterowania triakiem mozemy to łatwo
opisać w pętli głównej....

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



podłącz układ i zobacz jak działa :)

UWAGA !!!
w układzie wystąpi wysokie napięcie niebezpieczne dla zdrowia i życia


Zakładam że umiesz podłaczyć triak i układ detekcji przejścia przez zero do mikrokontrolera oraz wiesz jak to powinno wyglądać ... choć moim zdaniem do grzałki w wytrawiarce jest to zbędne i powinieneś tylko pilnować zadanej temperatury
natomiast tak mozna sterować bumbelkami , choć tez niema to większego sensu w wytrawiarce.

oczywiście wymaga to zastosowania timera
wiec użyjesz zapewne biblioteki TimerOne

do sterowania rozsądnego trzeba obliczyć podstawę, biorąc pod uwagę czestotliwośc napięcia zasilania 50Hz ,
by uzyskać liczbę kroków sterowania np 128 ...
Oczywiście jest to kłopotliwe bo będziemy mieli cykl 2 razy .... raz przy połowie fazy i raz przy połowie zera :)
no ale uzyskamy coś koło 100Hz i musimy sobie wyliczyć częstotliwośc kroków .... zapewne wiesz jak to sobie obliczyć

wiec wystarczy w prosty sposób przechwycić przejście przez zero , w przerwaniu
no:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i podstawiając wyliczone wartości do timera ....

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



ale to wszystko przecież wiesz .....

cały układ można zrealizować np tak :

Obrazek

ale przecież wiesz o tym .,.,.

wiec w sumie nie bardzo chyba mogę ci pomóc


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 20:12 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Dzięki za rozbudowaną odpowiedź. Na dniach wezmę się za dostosowanie programu biorąc pod uwagę Twoje wskazówki. Napisze jak mi poszło.
PS. sam kod docelowo ma być użyty do wytrawiarki ale chciałbym zrozumieć i nauczyć się też czegoś dodatkowego przy okazji a więc płynnego sterowania mocą, tak na przyszłość ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 20:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ależ proszę bardzo i czekam na efekty

tymczasem cały program może wyglądać np tak :


Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



tak to widzę ja na tą chwilę , ale mogę się mylić :P


ale przecież wystarczy popatrzeć na źródło wiedzy arduino.cc
i masz bardzo ładny przykład :

http://playground.arduino.cc/Code/ACPhaseControl

można rzec sterowanie fazowe pełną gębą ....

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 21:09 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Nie do końca rozumiem zasadę działania Twojego programu ale korzystając z niego, po wprowadzeniu kilku drobnych modyfikacji uzyskałem płynne sterowanie żarówką, które reguluje dwoma microswitchami (obecnie 12 stopni). Teraz "tylko" sprzężyć to z czujnikami temperatury i wymyślić odpowiedni algorytm utrzymujący zadaną temperaturę... :D Jakieś pomysły?

A tu kod:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 21:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

wszystko zależy jaką chcesz temp utrzymywać bo to decyduje o doborze czujnika .... ale sądzę że jednak będzie to DS18B20 w tym wypadku zanim przejdziemy dalej zainteresuj się biblioteką WIRE oraz obczaj przykłady odczytu tego scalaczka ....

a reszta to fraszka

co zaś do kodu sorki że namieszałem , ale można rzec na kolanie pisałem ... założeniem było że będzie samo ściemniać
żarówkę , czyli celowo połowa żebyś pomyślał nad resztą jak widzisz udało ci się całkiem zgrabnie prawda :)

teraz wiec tylko odłóż ten program i poćwicz 1Wire jak już będziesz umiał odczytać temp z układu
to będziesz ładnie wiedział jak sprawdzać czy temp ma zadaną wartość i warunkowo wykonywać funkcje grzania :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 21:52 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

I o to w tym wszystkim chodzi. Gotowiec jak gotowiec, co z tego, że raz zadziała jak tego nie rozumiem i każda modyfikacja to śmierć w oczach :D Co do czujników temperatury - ds18b20 posiadam, biblioteki także, obsługę jako tako umiem. Dla nauki i zabawy użyłem dwóch na płytce stykowej, pomiary wyświetlałem na LCD, wszystko śmigało. No to kolejnym celem jest wstawienie warunków. Spróbuje sam do tego dojść a w razie czego zwrócę się do Ciebie o pomoc. Wielkie dzięki za dotychczas poświęcony czas ;)

Dwa pytanka tylko:
- sprawdzanie zadanej temperatury wrzucić do loopa?
- jakiś rozsądny poradnik do tworzenia menu na LCD 2x16 albo chociaż jakieś wskazówki?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 23:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Proponuję odświeżać pomiar temperatury nie częściej niż 1 raz na sekundę ,

znajdziesz tu na forum menu , ale w c nie na arduino .... niemniej .....
jaki masz ten LCD 2x16?? ja w swojej wytrawiarce ... mam tylko info:

temp: xx,x C Grzanie: ON /OFF
ustawiona temp: 50,1 C, Bumbelki ON

i to wszystko do ustawiania są 2 przyciski , naciskasz 2 RAZEM i ustawiasz temp , a potem
wciśnięcie 1 włącza bąbelki , a drugiego wyłącza

:)
Co do menu mam na to kilka sposobów na duino ... moze powinienem opisac kiedyś ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2013, o 00:42 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Przyglądam się wątkowi i czekam, aż dojdziemy do algorytmu PID :) bo przy płynnej regulacji to chyba się bez jakiegoś sprytnego algorytmu nastawy mocy nie obejdzie.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2013, o 08:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

po co czekać masz tu ładnie

http://playground.arduino.cc/Code/PIDLibrary

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lis 2013, o 15:25 
Offline
Nowy

Dołączył(a): 18 maja 2013
Posty: 11
Pomógł: 0

Sun - jasne, że powinieneś to opisać, nawet jak najszybciej! Będę pierwszym, który z tego skorzysta :D
Najzwyklejszy LCD 2x16 zgodny z HD44780. Do Twoich opcji chciałbym dodać jeszcze ustawianie czasu trawienia, żeby przypadkiem mi się nie zapomniało, że płytkę trawię :D Do całości jeszcze ze 3 LEDy, buzzer i to by było chyba na tyle. Z tą biblioteką z regulatora PID pokombinuję jak już będę miał grzałkę, "akwarium" i napowietrzacz.
Tak naprawdę ta pierwsza wytrawiarka to prototyp, bo dopiero z jej użyciem chciałbym wytrawić już zaprojektowaną przeze mnie (tu posilę się poradnikami Mirka), konkretnie pod zastosowanie płytkę. Jak to zrobię, to pomyślę nad jakąś mądrą i estetyczną obudową. Apropo samej konstrukcji wytrawiarki - macie może jakieś wskazówki, rady na co zwrócić szczególną uwagę? No i jeszcze jedno - ile kosztuje jakaś najtańsza, odpowiednia do termotransferu drukarka laserowa? W internecie ciężko o rzetelne informacje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lis 2013, o 16:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ja używam LJ1100 ale chłopaki różnych używają
co do trawiarki opisałem gdzieś tutaj swoją na forum

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO