Strona Główna CNC FORUM
Amatorskie maszyny CNC

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum
Projekty maszyn - Akcesoria CNC

Poprzedni temat «» Następny temat
PWM Generator
Autor Wiadomość
jarekk 
Specjalista poziom 3


Pomógł: 21 razy
Dołączył: 17 Mar 2006
Posty: 638
Skąd: Gdańsk
Wysłany: 2008-04-19, 20:32   

Podsumowując: każdy ma prawo do własnego wyboru. W zależności od posiadanej wiedzy,warsztatu, chęci i plam na słońcu będą to inne wybory. Nie próbujmy się przekonywać o wyższości Świąt Bożego Narodzenia nad Wielkanocą - zwłaszcza jeżeli dyskusja wychodzi poza tereny merytoryczne.
 
 
ali 
Stały bywalec
amateur


Pomógł: 4 razy
Dołączył: 28 Wrz 2005
Posty: 53
Skąd: Poznań
Wysłany: 2008-04-20, 00:32   

Leoo napisał/a:
ali napisał/a:
Teraz pchasz wszedzie FPGA ?

Jeśli to miał być dowcip, to Koledze nie wyszedł.


Sam kolega zaczal :

Cytat:
Rozwiązania sprzętowe (kombinacyjne) są najszybsze, dla tego procesory nigdy nie wyprą układów programowalnych.


Chyba, ze inaczej rozumiemy "uklady programowalne" dla mnie uklad programowalny to mikroprocek i FPGA ...uklady typu 555 nie sa absolutnie programowalne, wiec jesli kolega "jedzie" po prockach tlumaczac, ze uklady programowalne sa lepsze to nasuwa sie jedno, ze kolega uzywa FPGA, stad moje pytanie...

Pomijam fakt, ze stwierdze nie, iz uklady programowalne nie wypra procesorow to mi sie wydaje, ze to troche odwrotna chronologia, gdyz w tej chwili w pewnych dzedzinach wlasnie procki zaczynaja byc wypierane przez programowalne uklady logiczne (FPGA) ze wzgledu na spadek cen (wymienic by chociazby nalezalo uklady Xilinx'a) i co za tym idzie wieksza dostepnosc. Zreszta niedlugo sie moze okazac, ze bedzie tylko FPGA, a jesli bedziemy chcieli realizowac na nim jakis mikroprocesor to go sobie tam po prostu wgramy, bo jest to absolutnie mozliwe.

Co do sensownosci, koledzy tu skacza z cena... jesli potrzeba tego milion sztuk to fakt, warto walczyc o roznice 2pln na sztuce, jesli nie to smiem twierdzic ze 5pln za procka to malo, zwlaszcza patrzac na mozliwosci, ktore on oferuje. Oczywiscie problemem pozostaje umiejetnosc programowania i tego absolutnie nie neguje, nie twierdze, ze jest to jedyna sluszna droga ani ze jest najlepsza, ale ma sporo zalet, ktore jestem w stanie wymienic i ja osobiscie zarzucilbym procka, bo bym sobie wszystko poustawial jak chce i mial pewnosc, ze te wartosci sa stabilne, bo jakby nie patrzec chodzi o generowanie sygnalu cyfrowego (jakim z pewnoscia jest PWM) a 555 dziala w oparciu o czas ladowania kondensatora i komparatory wiec full analog.

Co do zawieszania sie, to kwestia tego jak jest co napisane, windows sie wiesza, linux jakos mniej... a sa systemy serwerowe, ktore uptime maja w latach... i sie nic nie wiesza.

To jak z maszyna jesli bedzie zrobiona dobrze, to bedzie sluzyc latami i nic sie niej nie popsuje, jesli bedzie zle zrobiona to nie przepracuje tygodnia bez awarii, oczywiscie abstrahujac czynniki zewnetrzne, bo jak to mawiaja "troche czlowieka i technika sie gubi" ;)

Wiec "procki sa zle bo sie wieszaja", jest takim samym argumentem jak "mlotki sa do dupy bo mi sie trzonek zlamal".

Jeszcze takie OT a propos wypowiedzi kolegi :

Cytat:
nie każdy musi umieć wszystko .
to za komuny każdy musiał być malarzem , elektrykiem , mechanikiem , itp.


Nie wiem jak bylo za komuny, ale teraz niestety jest podobnie. Jesli chcesz miec cos zrobione dobrze musisz umiec zrobic to sam, albo zeby faktycznie zrobic to samemu, albo zeby wiedziec czego wymagac.
Ja dlugiej kariery zawodowej nie mam (bo w sumie jeszcze dzieciak jestem), a juz takich przykladow moglbym podac kilkanascie. Gdzie nawet nie brak wiedzy co po prostu myslenia, albo brak umiejetnosci wyciagania wnioskow z wlasnych bledow, ale niestety taki narod, cale szczescie to sie zmienia bo zaczynaja sie pojawiac ludzie, ktorzy sie przykladaja do tego co robia, niestety "zbyt wolno".
_________________
pozdrawiam
Jakub Jędrzejczak
 
 
 
Adalber 
Specjalista poziom 2


Pomógł: 20 razy
Dołączył: 10 Lip 2005
Posty: 417
Skąd: Polska
Wysłany: 2008-04-20, 09:58   

Może jakiś mały kompletny projekcik tyczący generatora PWM na procku lub lepiej FPGA -kolega ali nam tu przedstawi- wszyscy wtedy uwierzymy w cudowną odmianę narodu ponieważ "zaczynaja sie pojawiac ludzie, ktorzy sie przykladaja do tego co robia ".
 
 
Leoo 
Specjalista poziom 3


Pomógł: 150 razy
Dołączył: 15 Lis 2006
Posty: 1908
Skąd: Tarnobrzeg
Wysłany: 2008-04-20, 11:45   

ali napisał/a:
Ja dlugiej kariery zawodowej nie mam (bo w sumie jeszcze dzieciak jestem), a juz takich przykladow moglbym podac kilkanascie. Gdzie nawet nie brak wiedzy co po prostu myslenia, albo brak umiejetnosci wyciagania wnioskow z wlasnych bledow, ale niestety taki narod, cale szczescie to sie zmienia bo zaczynaja sie pojawiac ludzie, ktorzy sie przykladaja do tego co robia, niestety "zbyt wolno".

Kolega sugeruje, że jestem głupi bo zaproponowałem PWM na 555???
Proszę przeczytać tytuł wątku i pierwszy post Autora.
Jak na razie Kolega jedynie neguje i ciągle ma wiele do powiedzenia ale z goła nic konkretnego. Proszę zamieścić schemat PWM na procesorze (PIC12, ATTINY itp.), opublikować kod źródłowy. Wówczas rady Kolegi będą miały sens, na razie mamy wyłącznie puste słowa.
Forum ma pomagać a nie promować "politykierów".
 
 
ali 
Stały bywalec
amateur


Pomógł: 4 razy
Dołączył: 28 Wrz 2005
Posty: 53
Skąd: Poznań
Wysłany: 2008-04-20, 23:15   

Leoo nie odwracaj kota ogonem, nigdzie nie napisalem, ze jestes glupi, nie napisalem tez ze zaproponowany przez Ciebie uklad nie bedzie dzialal, nie szukaj podtekstow w tym co pisze bo ich nie ma, swoja droga strasznie drazliwi jestescie tutaj.

Przyczepilem sie do

Cytat:

Etap życia, kiedy wkładałem procesor gdzie popadnie, mam już za sobą. Rozwiązania sprzętowe (kombinacyjne) są najszybsze, dla tego procesory nigdy nie wyprą układów programowalnych.


I juz wyjasnilem dlaczego, piszesz ze procki sa gorsze od kombinacyjnych ukladow programowalnych I ISTOTNIE TAK JEST, problem w tym, ze zaproponowane przez Ciebie 555 nie jeste kombinacyjnym ukladem programowalnym. Wiec w kontekscie tematu jest to bzdura, stad poszlo moje pytanie czy teraz pchasz wszedzie FPGA skoro procki juz sa gorsze. I tylko tyle mi chodzi, abys wyjasnil to kwestie bez zakladania, kto tu jest glupi, kto ma jakie literki przed nazwiskiem, bo sie z Toba absolutnie zgodze, ze dzisaj nic one nie znacza.

A dla kolegi domagajacego sie kodu prosze:
Procek ATmega8 AVcc podpiete pod napiecie zasilania pomiedzy Aref a mase kondensator, potencjometr podpiety pomiedzy zasilanie i mase a "szczotka" do wejscia ADC0, na pinach wyjscia OC1A i OC1B (jedno jest negacja drugiego). T1 w trybie pracy FASTPWM czestotliwosc PWM Fosc/1024.


.nolist
.include "m8def.inc"
.list


.def mpr1 = r16

.org 0x00
rjmp start
.org ADCCaddr ; ADC Conversion Complete
rjmp ADC_int




start:
ldi mpr1,low(RAMEND)
out spl,mpr1
ldi mpr1,high(RAMEND)
out sph,mpr1


ldi mpr1,(0<<REFS1|1<<REFS0)
out admux,mpr1
ldi mpr1,(1<<ADEN|1<<ADSC|0<<ADFR|1<<ADIE|1<<ADPS2|1<<ADPS1|1<<ADPS0)
out adcsra,mpr1


ldi mpr1,(1<<COM1A1|0<<COM1A0|1<<COM1B1|1<<COM1B0|1<<WGM11|1<<WGM10)
out TCCR1A,mpr1
ldi mpr1,(1<<WGM12|0<<WGM13|0<<CS12|0<<CS11|1<<CS10)
out TCCR1B,mpr1

sei

praca: rjmp praca


ADC_int:

in zl,adcL
in zh,adcH

out OCR1AH,zh
out OCR1AL,zl
out OCR1BH,zh
out OCR1BL,zl

sbi ADCSRA,ADSC

reti


Mam nadzieje, ze Kolega wybaczy brak kodu na FPGA, ale nie mam obecnie zainstalowanego webpacka i nie pisalem juz na spartany z pol roku, wiec dla celow czystego przycwaniaczenia na forum nie chce mi sie tego robic.

pozdro
_________________
pozdrawiam
Jakub Jędrzejczak
 
 
 
jarekk 
Specjalista poziom 3


Pomógł: 21 razy
Dołączył: 17 Mar 2006
Posty: 638
Skąd: Gdańsk
Wysłany: 2008-04-20, 23:26   

Cytat:
A dla kolegi domagajacego sie kodu prosze:


Kod pewnie będzie działał, ale mam pewną praktyczną uwagę - rzadko kiedy dane z przetwornika A/C są zupełnie czyste więc używanie ich na żywca ( bez filtracji cyfrowej) może dać nie do końca stabilny sygnał na PWM.
 
 
mag32 
Specjalista poziom 1
SQ7JZI


Pomógł: 2 razy
Dołączył: 31 Paź 2004
Posty: 277
Skąd: Częstochowa
Wysłany: 2008-04-21, 06:57   

jarekk napisał/a:

Kod pewnie będzie działał, ale mam pewną praktyczną uwagę - rzadko kiedy dane z przetwornika A/C są zupełnie czyste więc używanie ich na żywca ( bez filtracji cyfrowej) może dać nie do końca stabilny sygnał na PWM.


Czyli pewnie wystarczyłoby wyciągać średnia z pewnej liczby próbek.

Ja jednak zastosuje 555 kolego Leoo, ale i to może być ciekawe, gdyby nie fakt, że jak rozumiem jest tu regulacja tylko wypełnienia, a mnie potrzeba też częstotliwość. Aczkolwiek pozwolę sobie przy najbliższej okazji przetestować i ten pomysł, choć nie bardzo widzę tu możliwość właśnie ustawiania częstotliwości.

Kod:

Procek ATmega8
AVCC podpięte pod napięcie zasilania
pomiędzy Aref a masę kondensator,
potencjometr podpięty pomiędzy zasilanie i masę a "szczotka" do wejścia ADC0,
na pinach wyjścia OC1A i OC1B (jedno jest negacja drugiego).
T1 w trybie pracy FASTPWM
częstotliwość PWM Fosc/1024.


.nolist
.include "m8def.inc"
.list


.def mpr1 = r16

.org 0x00
rjmp start
.org ADCCaddr ; ADC Conversion Complete
rjmp ADC_int




start:
ldi mpr1,low(RAMEND)
out spl,mpr1
ldi mpr1,high(RAMEND)
out sph,mpr1


ldi mpr1,(0<<REFS1|1<<REFS0)
out admux,mpr1
ldi mpr1,(1<<ADEN|1<<ADSC|0<<ADFR|1<<ADIE|1<<ADPS2|1<<ADPS1|1<<ADPS0)
out adcsra,mpr1


ldi mpr1,(1<<COM1A1|0<<COM1A0|1<<COM1B1|1<<COM1B0|1<<WGM11|1<<WGM10)
out TCCR1A,mpr1
ldi mpr1,(1<<WGM12|0<<WGM13|0<<CS12|0<<CS11|1<<CS10)
out TCCR1B,mpr1

sei

praca: rjmp praca


ADC_int:

in zl,adcL
in zh,adcH

out OCR1AH,zh
out OCR1AL,zl
out OCR1BH,zh
out OCR1BL,zl

sbi ADCSRA,ADSC

reti


Czy na wejście analogowe można podać aż taki zakres napięć, nie ma tam przypadkiem ograniczenia do połowy napięcia zasilania ?
Nie pamiętam już not tego scalaczka, ale cos takiego mi się kojaży.
_________________
Nie ma rzeczy niemożliwych, są tylko trudne do zrobienia.
Mierz co mierzalne,
a niemierzalne uczyń także mierzalnym"
(Galileo Galilei)
 
 
 
ali 
Stały bywalec
amateur


Pomógł: 4 razy
Dołączył: 28 Wrz 2005
Posty: 53
Skąd: Poznań
Wysłany: 2008-04-21, 09:35   

Cytat:
Kod pewnie będzie działał, ale mam pewną praktyczną uwagę - rzadko kiedy dane z przetwornika A/C są zupełnie czyste więc używanie ich na żywca ( bez filtracji cyfrowej) może dać nie do końca stabilny sygnał na PWM.


Absolutnie sie z tym zgodze, ale juz nie chcialo mi sie wczoraj poznym wieczorem pisac usredniania po ostatnich 16 czy 32 wartosciach. Dodatkowo wstawilbym rezystor w szereg ze szczotka, i pomiedzy wejscie ADC0 a mase dal kondensator.

Cytat:

Czy na wejście analogowe można podać aż taki zakres napięć, nie ma tam przypadkiem ograniczenia do połowy napięcia zasilania ?


Mozna zastosowac 3 rozne napiecia odniesienia. Wewnetrzne rowne 2.56V , zewnetrzne podlaczone pod Aref, lub przyjac AVcc za napiecie odniesienia, w tym przypadku bedzie ono rowne napieciu zasilania i napieciu na potencjometrze, co spowoduje, ze nawet plywanie napiecia zasilania nie bedzie mialo wplywu na odczyt wartosci (ustawienie PRka) gdyz zmiany beda proporcjonalne.

I uklad faktycznie jest generatorem o stalej czestotliwosci, aby uzyskac zmienna czestotliwosc trzeba ustawic timer w inny tryb (tak aby moc ustawiac wartosc TOP ja poszedlem na latwizne i wybralem tryb 10bit gdzie wartosc TOP = 0x3ff).

Jesli chodzi o "recepte" to ja bym zrobil to tak:
wyznaczyl czestotliwosci jakie mnie interesuja (graniczne).
Sprawdzil czy da sie te czestotliwosci uzyskac z tego samego ustawienia bitow prescalera, i sprawdzil czy przy takim ustawieniu rozdzielczosc pwm dla czestotliwosci najwyzszej mnie satysfakcjonuje. Jesli jest to mozliwe, wystarczy sie bawic 16 bitami, ktore odpowiadaja za wartosc TOP, jesli nie trzeba by jeszcze wlaczyc w to zabawe bitami prescalera tego timera... tak uzyskamy czestotliwosc.
Zabawe 16 bitami mozna zrobic na rozne sposoby, jesli potrzebna bedzie jakas dziwna charakterystyka przestrajania tej czestotliwosci polecam wrzucic tablice (pamieci mamy 8k wiec spoko sie zmiesci) bo nawet jak ktos na kozaku pojdzie, ze chce uzyskac 10bit rozdzielczosc to jest 1024 x 3 bajty = 3k zajmie tablica.

Uzyskanie wypelnienia przy zmiennej dlugosci impulsu bedzie troche trudniejsze niz w kodzie, ktory jest wyzej, ale dalej absolutnie mozliwe do wykonania.

Musimy zastosowac procedury 24 lub 32 bitowego mnozenia i dzielenia (16 bit mozna sciagnac ze strony atmela i sprobowac stuningowac, ale wielu entuzjastow AVRow zamieszcza gotowe procedury dzielnia/mnozenia na swoich stronach... wiec chwila pogooglania zalatwi sprawe) nastepnie bierzemy wartosc odczytana z kanalu ADC ktory jest odpowiedzialny za wypelnienie, mnozymy ta wartosc razy wartosc TOP i nastepnie dzielimy przez wartosc maksymalnego wskazania kanalu ADC (jesli skorzystamy z calej mozliwej rozdzielczosci czyli 10 bitow maksymalne wskazanie to 0x3ff).
Uzyskana wartosc wrzucamy do rejestrow OCR i voila. Wykorzystanie powyzszych procedur sprowadza sie do zapakowania odpowiednich rejestrow i wywolania procedury. Oczywiscie jesli ktos ma wene, to moze sobie samemu napisac procedure dzielenia bo w tym konkretnym przypadku nie musi byc ona szybka. Realizacja PWM jest calkowicie sprzetowa, ADC chodzi na przerwaniach, oczywiscie w kazdym przypadku trzeba zadbac o to aby nam przerwania nie mogly nic popsuc w liczeniu, czyli rejestry wykorzystane do obslugi przerwania na poczatku procedury obslugi przerwania zrzucic na stos + oczywiscie rejestr statusu, i po zakonczeniu obslugi przerwania sciagnac je ze stosu.

PS. powyzszy kod, ktory popelnilem wczoraj jak widze teraz zawiera maly blad, a konkretnie trzeba ustawic piny OC1A i OC1B jako wyjsciowe, czyli brakuje dwoch lini
ktore bym umiescil zaraz po ustawieniu timera (przed komenda sei).

sbi ddrb,pb0
sbi ddrb,pb1

Za niedoskonalosc przepraszam, jestem tylko czlowiekiem.

PS2. jesli by koledzy chcieli pisac jakis wspolny projekt mikroprocesorowy to ja chetnie podziele sie wiedza i doswiadczeniem jesli mowa o jakims konkretnym pomysle, to z tego co widzialem w mach'u jest mozliwosc zwiekszenia wejsc/wyjsc przez podlaczenie dodatkowego urzadzenia przez port szeregowy, niestety nie udalo mi sie znalezc protokolu komunikacji, ale przyznam szczerze, ze jakos specjalnie sie nie wysilalem.
_________________
pozdrawiam
Jakub Jędrzejczak
 
 
 
jarekk 
Specjalista poziom 3


Pomógł: 21 razy
Dołączył: 17 Mar 2006
Posty: 638
Skąd: Gdańsk
Wysłany: 2008-04-21, 10:25   

ali napisał/a:
PS2. jesli by koledzy chcieli pisac jakis wspolny projekt mikroprocesorowy to ja chetnie podziele sie wiedza i doswiadczeniem jesli mowa o jakims konkretnym pomysle, to z tego co widzialem w mach'u jest mozliwosc zwiekszenia wejsc/wyjsc przez podlaczenie dodatkowego urzadzenia przez port szeregowy, niestety nie udalo mi sie znalezc protokolu komunikacji, ale przyznam szczerze, ze jakos specjalnie sie nie wysilalem.


W machu aby podłączyć inne urządzenie należy napisać plugin ( jest do tego SDK, przykłady i nieco dokumentacji). Jestem w trakcie budowy takiego urządzenie ( projekt komercyjny dla Step2Cnc ).
 
 
Leoo 
Specjalista poziom 3


Pomógł: 150 razy
Dołączył: 15 Lis 2006
Posty: 1908
Skąd: Tarnobrzeg
Wysłany: 2008-04-21, 10:30   

ali napisał/a:
Musimy zastosowac procedury 24 lub 32 bitowego mnozenia i dzielenia (16 bit mozna sciagnac ze strony atmela i sprobowac stuningowac, ale wielu entuzjastow AVRow zamieszcza gotowe procedury dzielnia/mnozenia na swoich stronach... wiec chwila pogooglania zalatwi sprawe) nastepnie bierzemy wartosc odczytana z kanalu ADC ktory jest odpowiedzialny za wypelnienie, mnozymy ta wartosc razy wartosc TOP i nastepnie dzielimy przez wartosc maksymalnego wskazania kanalu ADC (jesli skorzystamy z calej mozliwej rozdzielczosci czyli 10 bitow maksymalne wskazanie to 0x3ff)...

Nieźle Koledze idzie. Proszę kontynuować. Może zamiast gnębić matematykę, lepiej ściągnąć kompilator wyższego rzędu np. Basic albo C? Kiedy możemy spodziewać się działającego projektu? Faktycznie to bułka z masłem!!!
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group

sponsorem forum jest www.akcesoria.cnc.info.pl
Informacje na witrynie cnc.info.pl są podawane tylko w celach edukacyjnych oraz hobbystycznych. Jedynie użytkownik wysyłający wiadomość lub plik ponosi pełnoprawną odpowiedzialność za ich treść. Jeżeli wynikną z tego konsekwencje prawne, cnc.info.pl może przekazać wszelkie informacje właściwym organom państwowym na temat danego użytkownika oraz pomóc w jego zlokalizowaniu. Zgodnie z ustawą o ochronie danych osobowych cnc.info.pl nie przekazuje informacji odnośnie użytkowników firmom i osobom prywatnym. Hasła, adresy e-mail oraz numery IP są szyfrowane w bazie danych i jedynie administrator jest w stanie odczytać te informacje. Cnc.info.pl jest przeciwna łamaniu zabezpieczeń oraz łamaniu praw autorskich, jednak niektóre osoby nie przestrzegają naszego regulaminu. Jeżeli zobaczyłeś wiadomość lub plik, który twoim zdaniem jest nielegalny lub narusza twoje dobra osobiste, prosimy o natychmiastowy kontakt:
Administrator

www.akcesoria.cnc.info.plsilniki krokoweŁożyska linioweśruby trapezowe i kulowe
Strona wygenerowana w 0,28 sekundy. Zapytań do SQL: 12