Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją od 24.05.2019 we wszystkich miejscach

  1. 4 punkty
    Podobnie jak @ethanak korzystam z pakietów płytek MCUdude. Ogólnie to na ten temat pisałem już nieco na moim blogu. https://rafal-bartoszak.blogspot.com/2019/05/programowanie-mikrokontrolerow-atmega.html
  2. 4 punkty
    Cześć, ja używałem "ATtiny Core": https://github.com/SpenceKonde/ATTinyCore z Attiny85 i działało poprawnie. BTW: korzystałem z pętli PLL dla zegara 16 MHz, aby wygenerować przebieg PWM o częstotliwości 20 KHz. Miałem małe przeboje z przetwornikiem ADC - analogRead ()nie działał i musiałem oprogramować ADC na rejestrach, wtedy ADC działał poprawnie Pozdrawiam
  3. 4 punkty
    Ja tam jak potrzebowałem to wziąśćłem od Wujka Gógla... ATtiny 85/84: https://github.com/damellis/attiny ATtiny13: https://github.com/MCUdude/MicroCore ATmegi: https://github.com/MCUdude i wybierz sobie która. Więcej na razie nie potrzebowałem. BTW. nieważne jaki programator jeśli używasz Arduino IDE.
  4. 4 punkty
    Inaczej mówiąc, to co wysyłasz do silnika jest jakims przebiegiem okresowym. Np. w najprostszym schemacie sterowania fazami silnika BLDC masz 6 komutacji skłądających się na jeden okres. Sterownik robi je po kolei a potem wraca do sytuacji początkowej i zaczyna się powtarzać. To jest całe 360° z punktu widzenia sygnału zasilającego uzwojenia, a poszczególne komutacje zachodziły oczywiście co 60°, czyli co zmianę stanu jednego z 3 czujników (jeżeli je masz w silniku). Ale nie widząc prawdziwego silnika nie wiesz o ile w czasie tych "elektrycznych" 360° obrócił się wał, bo to wynika z konstrukcji uzwojeń stojana i sposobu rozmieszczenia magnesów stałych na wirniku. Współczynnik ten może wynosisć 2, 3, 4 itd. Np. wielkość 4 oznacza, że na każdy pełny cykl sterowania ("elektryczne 360°) wirnik wykona tylko 90° obrotu mechanicznego, bo tak został zrobiony.
  5. 4 punkty
    Jutro będzie oficjalne ogłoszenie na stronie konferencji, więc mogę wreszcie co nieco napisać o tajnym projekcie, którym się zajmowałem przez kilka ostatnich miesięcy. Otóż produkujemy 1400 sztuk lekko zmodyfikowanych PewPew do rozdania na pewnej dużej europejskiej konferencji pythonowej. Wyglądają one tak (na tym zdjęciu urządzenie jest do góry nogami, żeby lepiej widać było szczegóły): Jest tutaj dla mnie kilka "pierwszych razy". Po pierwsze, pierwszy raz zamawiam z Chin tej wielkości zamówienie. Po drugie, ze względu na ilość produkowanych urządzeń mogliśmy sobie pozwolić na nietypowy kolor maski dla płytki — w tym przypadku pomarańczowy, jako jeden z kolorów tegorocznej konferencji (drugim jest niebieski, stąd kolor przycisków i ekranu). Po trzecie, pierwszy raz zrobiłem kompletny firmware, zawierający już w sobie zarówno bootloader, circuitpythona jak i wszystkie pliki, które mają być "fabrycznie" wgrane — przedtem procedura programowania była trochę bardziej skomplikowana. No i dochodzi jeszcze pierwszy raz kiedy kupuję 2800 sztuk baterii... Oczywiście na konferencji odbędą się warsztaty z programowania tego — mamy nadzieję, że uda nam się zwerbować ochotników, którzy sami się nauczywszy obsługi pomagać będą kolejnym uczestnikom — zobaczymy jak to wyjdzie w praktyce.
  6. 3 punkty
    Jakiś czas temu na forum zaprezentowałem projekt procesora zrealizowanego na układzie FPGA. Był to układ zrealizowany na dwóch płytkach Elbert v2. Aby go uruchomić należało wykonać dość sporo pracy. Dzisiaj prezentuję pierwszą wersję układu DCE Q816, czyli bezpośredniej kontynuacji poprzedniego projektu. Można powiedzieć, że pierwsza wersja Q818 to tak naprawdę Q816 zrealizowany tylko na jednej płytce Elbert v2. Układ jest w pełni kompatybilny z poprzednim projektem oraz posiada identyczną listę rozkazów. Na ten moment nie będę skupiał się na budowie procesora, ponieważ jest ona praktycznie identyczna jak w układzie Q816. Jedyną różnicą jest to, że pamięć ROM oraz procesor zaimplementowane została na tym samym układzie FPGA. W związku z tym każdy, kto posiada płytkę Elbert v2 może pobrać projekt, który dostępny jest tutaj, a następnie uruchomić procesor Q818 w swoim domu. Po implementacji projektu na płytce FPGA powinniśmy zobaczyć następujący efekt świetlny. Należy również wspomnieć, że porty procesora skonfigurowane zostały w następujący sposób. przełączniki DIP Switch - wejście IN procesora (logika odwrotna) przycisk SW1 - RESET port P1 - wyjście OUT1 procesora diody LED - wyjście OUT2 procesora Programowanie procesora odbywa się poprzez zmianę zawartości pamięci ROM procesora. Aby tego dokonać musimy otworzyć plik ROM.vhd i następnie wpisać binarną zawartość kolejnych komórek pamięci. Najmłodsze 5-bitów to rozkaz dla procesora. Kolejne 8 to tzw. dana bezpośrednia, którą możemy przesłać do innych rejestrów. Poniżej umieszczam spis dostępnych rozkazów procesora oraz instrukcje dla ALU zapisywane w rejestrze C. Na ten moment jest to pierwsza wersja układu Q816 w przyszłości postaram się o uporządkowanie samego kodu, jak i dodanie kolejnych funkcji. O zmianach i kolejnych wersjach postaram się informować w komentarzach do tego posta.
  7. 3 punkty
    Zamontowałem ramiona, BARDZO podstawowa funkcjonalność już działa. (chyba). Efekt można zobaczyć na poniższym filmiku.
  8. 3 punkty
    @hazi18, jeśli ten program używasz od dwóch lat to trochę zakopałeś te swoje 2 talenty. Jest do poprawy na wielu poziomach. Po pierwsze WDT, to tylko 3 linijki dodatkowe, jeśli to Arduino się zawiesi to rozwiąże problem, przykład: https://circuits4you.com/2018/01/24/tutorial-on-arduino-watchdog-timer-setup/. Kolejne to czujnik, jest niestety kiepskim wyborem, odczyt trwa ~250ms, lubi się powiesić. Nie używam go na co dzień, ale leży w szufladzie to sprawdziłem. W przykładzie jest jak zweryfikować czy w ogóle działa, Ty tego nie masz: if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!");, chyba warto zweryfikować czy w ogóle należy używać odczytanych wartości w dalszej części programu. Warto też dodatkowo sprawdzić, czy nie są jakieś trzepnięte, np. mniejsze niż 15oC czy większe niż 50oC, bo to w tym wypadku też byłoby podejrzane. Jak czytałem na forum sam reset układu Arduino + DHT często nie pomaga, trzeba odłączyć zasilanie by wszystko znowu zaczęło działać, chodzi zapewne od odłączenie czujnika, bo sam uC Atmega pracuje wg mnie bardzo stabilnie w porównaniu np. do ESP8266 czy ESP32, no w porównaniu z nimi to jest jak skała, wg mnie nie w tym leży problem. WDT w ESP czasami niewiele daje, gdy problemem jest jakiś spadek napięcia i procesor po prostu nie wstaje. W AVR domyślnie jest włączony BOD, który działa wg mnie znacznie pewniej. Dla DTH rozwiązaniem jest zasilenie go z pinu procesora, pobór prądu DHT rzędu kilku mA to pikuś dla AVR, po resecie z WDT wystarczy profilaktycznie wstrzymać program na 2s ze stanem niskim dla nóżki VCC DHT i masz czujnik zresetowany. Czyli po prostu zasil DHT jakbyś zaświecał leda, też można dać rezystor R=100. Odczyt DHT nie ma sensu częściej niż co 2s, w ogóle w programie nie zarządzasz czasem. Tu na blogu jest kurs Arduino, uzupełnij wiedzę o millis(). 3 ekrany nie mają sensu, wystarczy na jednym przez sekundę pokazywać np. 23.3C, potem przez sekundę 44.4H, potem ewentualnie stan licznika timeup sekund czy minut od resetu, by zauważyć czy był jakiś reset od WDT. Można też wymienić na jakiś z I2C. Trzy ekrany powinny też bez problemu działać na jednym pinie zegara jak zauważył @ethanak, jednak ta biblioteka ma kaprysy, ja sobie podłączyłem do pinów 11 i 13 i nie ruszyła w ogóle, piny są OK, bo inna biblioteka zadziałała. Przepiałem na domyślne 2 i 3, potem na 4 i 5 - tu było OK. Nie wiem o co jej chodzi.
  9. 3 punkty
    Niczego nie zwieraj. Skoro dziękujesz za odpowiedzi, to wypadałoby się do nich jakoś odnieść, nie uważasz? Bo ja mam z kolei wrażenie, że nic do Ciebie nie dotarło. Na Twoim schemacie widzę wszystkie błędy o jakich pisałem: ani na wejściach kostki nie masz oporników podciągających do +5V lub ściągających do masy, ani nie robisz nic by pozbyć się wielu impulsów generowanych przy jednym naciśnięciu. Czyli albo nie czytałeś, albo olałeś, albo nie zrozumiałeś. Wolisz nie wnikać tylko dostać potwierdzenie tego, że spaliłeś i z czystym sumieniem iść do sklepu po nowy układ? Tylko wiesz, tą metodą - mimo że to tani scalak - mogą Ci się skończyć pieniądze a nadal nic nie będziesz umiał. Ogólna zasada jest taka: żadne wejście układu serii 74HC.. nie może wisieć w powietrzu. U Ciebie wisi nie tylko jawnie niepodłączone OE, ale wiszą wszystkie (oprócz MR) gdy nie wciskasz żadnego przycisku a to oczywiście pierwszy poważny błąd. Podejrzewam, że tak jak wielu początkujących wykombinowałeś sobie, że na wejściach jest normalnie zero a jak podasz plus przez przycisk to będzie jedynka. Otóż tak nie jest. Tak więc po kolei: OE podłączasz na stałe do stanu niskiego, czyli do GND Od każdego z dwóch wejść: ST_CP i DS dajesz opornik 10-22k do GND, przyciski zostawiasz jak są - mają ciagnąć wejścia do stanu wysokiego, oporniki zapewnią stan niski Od wejścia SH_CP dajesz opornik jak wyżej i dodatkowo kondensator rzędu 1uF do masy - to powinno usunąć śmiecie na wejściu zegara rejestru przesuwającego. Dwa pozostałe wejścia z przycisków nie będa pracowały źle jeśli będą nieodfiltrowane. Czysty sygnał na SH_CP jest kluczowy dla poprawnego wsuwania kolejnych bitów. Przycisk ma podawać +5V na wejście SH_CP przez opornik szeregowy 1k. Między +5V a GND dajesz kondensator 100nF - układy cyfrowe potrzebują tego obowiązkowo Dla pewności narysuj schemat ze wszyskimi poprawkami i pokaż czy dobrze zrozumiałeś. Potem włączasz zasilanie, ponownie robisz testy i piszesz co tam zdziałałeś. BTW: Jeśli chcesz robić więcej eksperymentów z układami cyfrowymi będzie Ci potrzebny zestaw/moduł przycisków generujących dokładnie jeden impuls na każde wciśnięcie. Warto coś takiego (jakąś małą płyteczkę z kilkoma przyciskami i filtrami RC) zrobić raz a dobrze, by w kółko nie walczyć z tym samym problemem.
  10. 3 punkty
    Kąt elektryczny dotyczy wirującego pola magnetycznego, a kąt mechaniczny wirnika. Silniki BLDC często mają zwielokrotnioną ilość biegunów magnetycznych - krotność k. Wirnik podąża za wirującym polem magnetycznym, ale niekoniecznie kąt obrotu musi być w stosunku 1:1. Dla przykładu jeśli krotność k = 4 to 1 obrót elektryczny pola magnetycznego spowoduje tylko 1/4 obrotu mechanicznego wirnika. Należy pamiętać, że zwiększenie krotności uzwojenia to nie to samo co zmiana ilości faz w silniku.
  11. 3 punkty
    To zależy od tego jakie wyniki dostaniesz. Najprościej to wrzuć już te powyższe pary (przewodność [µs], napięcie [mV]) do arkusza i: zwyczajnie przyjrzyj się czy leżą na jednej prostej, spróbuj policzyć współczynniki regresji liniowej, jeśli punkty sa bardzo rozrzucone wokół prostej to spróbuj powtórzyć pomiary w tych punktach, jeśli to ewidentnie nie jest prosta tylko jakiś banan albo krzywa typu "S" to zacznij szukać dobrego przybliżenia wielomianem niskiego stopnia (max 3). Duże nieliniowości prądu względem LCD byłyby dziwne, bo akurat bardziej wierzę w błędy samego pomiaru czyli różnice między tym co naprawdę w wodzie piszczy a tym co pokazuje miernik na wyświetlaczu (a te są nie do zweryfikowania bez drugiego, dobrze skalibrowanego/wzorcowego miernika przewodności cieczy) niż w to, że urządzenie nie umie w miarę liniowo zamienić liczby pokazywanej na LCD na prąd w pętli. No, ale zobaczymy. Wrzuć do excela i pokaż jakiś wykres, najlepiej już z wykreśloną prostą regresji liniowej. Używaj napięć, bo masz jakieś kłopoty z rozdzielczością pomiarów prądów - mierzysz na 200mA? Zawsze używaj zakesu na którym masz jak najwięcej cyfr (*) i jesteś jak najbliżej końca skali. Czy używasz opornika 220Ω? Nie napisałeś tego. ------------------------------------------------- EDIT: (*) - ale staraj się nie zmieniać zakresu podczas takich przekrojowych pomiarów. Jeżeli tutaj widać, że pętla nie robi jakiś strasznych głupot i nie wypuszcza 50 czy 200mA, to zupełnie spokojnie całość możesz zmierzyć na zakresie 20mA. Wtedy, na typowym mierniku z wyświetlaczem 3½cyfry (czyli 1999) dostaniesz najlepsze możlwie na nim wyniki. Zmiana zakresu miernika gdzieś w trakcie robienia tabelki poskutkuje prawie na pewno jakimś nienaturalnym schodkiem na wykresie. Ale to tylko tak na marginesie, bo mając już włączony w obwód opornik prądy są rzeczą drugorzędną. I tak interesuje Cię tylko napięcie, bo to je będzie oceniał ADC w Arduino.
  12. 3 punkty
    Witam, W koncu udalo mi sie doprowadzic czesc mechaniczna "robota" do etapu, kiedy mozna go zaprezentowac na filmie. Konstrukcja jak wiele innych nieco wzorowana na kinowych "bohaterach". Troche wyroznia sie zastosowaniem komutatorow w dloniach (przez co maja ciagly obrot) oraz wydluzaniem szyi. Nieztety sterowannie na chwile obecna nie dziala poprawnie, po prostu mi nie wyszlo - na filmie powycinane sa fragmenty kiedy robot (a wlasciwie jego sterownik) zastanawia sie okolo 3 sekung przed kazdym ruchem. Jako napedy zastosowalem silniki DC z przekladnniami. Silniki maja po 2 wylaczniki krancowe zabezpieczajace na koncach ruchu. Zasilanie - akumulator 12V 12Ah.
  13. 3 punkty
    Jeszcze chciałbym dodać, że mam bardzo ciekawą wiadomość. Sprawa w tym, że jeden klient z Rosji napisał do mnie - A czy nie próbowałem robić filament z beczek KEG 30 litrowych od piwa. Nie miałem takiego pomysłu, więc sprawdziłem, czy idzie kupić takie beczki. Okazało się, że nie ma żadnego problemu, na Allegro można kupić dowolną ilość takich beczek po 7 zł/szt. Wg obliczeń z jednej takiej beczki mona zrobić ponad 70 m filamentu w jednym kawałku. Możliwe, że można uzyskać takie beczki za darmo w barach piwnych, ponieważ i tak oni nie wykorzystywane powtórnie tylko to już śmieci. Ścianka jest bardzo gruba w porównaniu z butelkami od napojów, czyli - 0,6 mm Tak, że dla zrobienia filamentu beczka musi byś pocięta na paski o szerokości 4,5 - 4,7 mm. Kupiłem na próbę 3 takich butli, zrobiłem przyrząd do rozcinania na paski o szerokości 4,5 mm. Na początek powcinałem z jednej butli parę pasków o długości po 5 m (dla sprawdzenia jak będzie robić się filament i jak nim będzie się drukować). Zrobiłem filament na swojej maszynce, przy czym zauważyłem, że przy takiej grubości ścianki w otrzymanym filamencie niema nawet malutkiego otworu, pręcik filamentu jest pełny. Właśnie dzisiaj zrobiłem próbne drukowanie małego kółka zębatego, wydrukowało się bardzo dobrze. Potem nagram specjalny filmik drukowania tym filamentem. Ale zauważyłem jedną rzecz. Z powodu sporej grubości ścianki rozcinanie ręczne idzie, ale bardzo ciężko, bardzo mocny opór, trzeba przyłożyć dużą siłę. Tak że ręcznie rozcinać bardzo ciężko. Ale możliwe, ponieważ z trudem, ale ponacinałem kilka pasków na próbę. Będę teraz projektować i wykonywać specjalną maszynkę do rozcinania tych burli na paski. Jak zrobię, to nagram wideo i poinformuje.
  14. 3 punkty
    Witam Od około półtora roku interesuję się sztuczną inteligencją, zwłaszcza zastosowaną w robotyce. Jest to dla mnie niezwykle ciekawy temat Kilka miesięcy temu zacząłem pracować nad moim prywatnym projektem, który cały czas jest w fazie rozwoju. Pewne elementy, takie jak uczenie się poprzez rozmowę z człowiekiem są gotowe, więc postanowiłem nagrać poniższe filmy: AgeBot podłączony jest do internetu. Platforma to gotowa konstrukcja - AlphaBot-PI. Użyłem jej, aby szybciej skupić się na oprogramowaniu. W ostatnim czasie domykałem widoczne na filmach możliwości robota i w międzyczasie zacząłem pracę nad wykorzystaniem kamery (aktualny stan to ~30%). W bliskiej przyszłości platformę mam zamiar wymienić na coś bardziej zaawansowanego lub zbudować swoją, ponieważ ta zaczyna mnie powoli ograniczać (pod względem hardware'u). Jej specyfikacja dostępna jest w internecie (np. na stronie firmy Waveshare), więc nie będę kopiował Jak już zauważyliście - używam Raspberry PI. Oprogramowanie na malinkę napisałem w C++, pozostała część to C++ oraz Python. Systemem jest Raspbian. Do zautomatyzowania instalacji niektórych zależności w systemie (akurat w przypadku samej malinki) używam narzędzia Ansible, a o te krytyczne dla działania aplikacji dba manager pakietów (apt, buduję paczki .deb). Do przetwarzania tekstu użyłem biblioteki Tensorflow, natomiast w procesie uczenia się, robotowi asystuje wnioskowanie. Kamera i przetwarzanie obrazu otworzy wiele nowych drzwi, ułatwi również pracę przy kolejnej domenie - planowaniu zadań. Sam robot jest stosunkowo małą częścią projektu, ale o tym... w przyszłości Każdy feedback mile widziany Pozdrawiam PS: W ciągu kilku dni napiszę posta z trochę bardziej szczegółowymi informacjami odnośnie przetwarzania tekstu - czatowania z robotem
  15. 3 punkty
    Jako sposób realizacji: napędy elektryczne plus zasilanie z pokładowego akumulatora, to na pewno na nie. Rzeczywiście, trendy są takie by do coraz nowszych urządzeń wstawiać coraz więcej inteligencji lub przynajmniej automatyki. Trochę to marketing, ale trochę jednak jakaś poprawa parametrów. Jeżeli udało się wstawić w przerzutkę silnik przełączający biegi i jeszcze to sprzedawać za chore pieniądze, to jakiś rynek na to jest. Weź jednak pod uwagę, że akurat rowery są bardzo trudnym rynkiem. Tu mechanika już dawno osiągnęła szczyty swoich możliwości i postępy z sezonu na sezon są bardzo małe, jeśli nie zerowe. Po prostu nie da się zrobić wiele lżejszych obręczy, ramy czy amortyzatora wciąż spełniających wymogi pracy w ciężkich warunkach wyścigów. Wszystko musi być lekkie i mega wytrzymałe tak, by nie zabić gościa podczas lądowania z dropa czy wybicia do przeskoku przez hopę. I nie mówię tu o maszynach downhillowych, gdzie masa w zasadzie może być dowolna tylko o lekkich ścigaczach do XC czy maratonów, bo trasy takich wyścigów także obfiują w trudne technicznie odcinki. Elektryczna przerzutka - jeśli już trzymamy się tego przykładu, nie używa mocy swojego źródła zasilania do przciwdziałąnia dużym siłom tylko do sterowania: do przesuwania wózka z trybu na tryb. To wydaje się lekkim zadaniem, prace nad tym by rozwiązanie było lźejsze (a przynajmniej w sumie tak samo ciężkie) jak osprzęt najwyższej klasy trwało latami. Nawet gdyby taki gadżet dawał jakieś zalety (np. szybsza zmiana biegów, brak problemów z przełączaniem przy lekko zużytym łańcuchu czy trybach, automatyczne przejazdy lekko dalej niż trzeba a potem cofanie co zwykle intuicyjnie robi się manetką), ale było cieższe niż zestaw mechaniczy, nikt by na to nawet nie spojrzał. Tutaj trzeba było maksymlanie odchudzić zasilanie (akumulator, sterownik i sam silnik krokowy zintergrownay w kosmicznej przerzutce) by dało radę to sprzedać. I dopiero wtedy mozna było mówić o zaletach jakie przed chwilą wymieniłem. A moim zdaniem, mimo zaangażowania giganta Shimano pomysł wciąż nie przyjął sie na rynku masowym. W przypadku rozwiązań "siłowych" typu napędy rowerowe, mamy wciąż do czynienia z niedoborami energii. Akumulatory są wciąż zbyt duże i zbyt ciężkie by stanowić ciekawe wsparcie nie tylko dla osób starszych czy w jakiś sposób ułomnych (nawet w sensie wypracowanej sprawności fizycznej). Jeżeli miałbym zamienić moją <10kg ścigałkę ustawioną pod maraton MTB na której z przyjemnością podjeżdżam pod dowolną górkę albo robię sobotnie 100km w lasach wokół Wawy na 20kg maszynę za 5-8kPLN, którą prowadzi się jak słonia, jest wołowata na singletrackach a prądu starcza na 40km, to musiałbym się chyba prochów najeść. Prowadzenie lekkiego i dobrze ustawionego roweru to przyjemność sama w sobie i kto raz tego spróbował, nigdy nie wróci do marketowego (lub w inny sposób obciążonego) sprzętu. Moim zdaniem Twoje rozwiązanie należy właśnie do tego drugiego rodzaju, tj. rozwiązania "siłowego". Będziesz walczył z grawitacją a to kosztuje mnóstwo mocy: popatrz na stojący w zawisie śmigłowiec. Rzeczywiście, ścieżka rozwoju amortyzatorów to z jednej strony coraz lżejsze konstruckje, ale z drugiej coraz więcej wycudowanych rozwiązań mechanicznych: lekkie sprężyny elastomerowe, dwie przeciwstawne, pompowane komory powietrzne, regulacje coraz większej liczby parameterów (naprężenie wstępne, tłumienie odbicia, długość skoku) właśnie po to, by ten sam amortyzator można było ustawiać pod a) różnych użytkowników, b) różne style jazdy, c) różne podłoża i profile trasy. A ponieważ w mechanikę trudno wbudować inteligencję (choć już zdarzają sie pierwsze jaskółki) to naturalnym kierunkiem wydaje się elektronika. Tu raczej bym sopdziewał się analizatorów drgań (wielkość, częstość) wbudowanych bezpośrednio w amortyzatory niż jakichś radarów podłoża. To przecież w amorku (tak przednim jak i tylnym) widać co i jak dzieje się z ramą czyli z rowerem. Biker intuicyjnie dociąża/odciąża przednie/tylne koło śledząc trasę i patrząc o wiele dalej niż zrobi to jakikolwiek czujnik. Jadąc 30km/h wąską scieżką wśród drzew nie patrzysz przecież pod przednią oś na dołki tylko kilkanaście (i więcej|) metrów do przodu, wybierając optymalną trasę, sposób przeskoczenia korzenia czy doła, ominięcie tarki czy wybierając punkt apeksu i konieczność wcześniejszego złożenia się w trudnym zakręcie z ujemnym skosem. Amortyzatory w tym pomagają, bo dzięki ich robrej regulacji opona utrzymuje jak nadłuższy kontakt z podłożem, ale nie są panaceum. Czasem największą ich wadą jest to... że są. Z uwagi na swoje własności pochłaniania energii zabierają ją nikomu innemu tylko Tobie, choćby tam gdzie musisz mocniej popracować: na podjazdach, na wyjściu z lasu na asfalt, gdy za wszelką cenę trzeba mocniej docisnąć by dojść grupę i nie zostać samotnie w otwartym polu itp. Wymyślono zatem blokadę skoku, by nagle rower MTB stał się sztywny jak szosówka. Wciskając/przekręcając odpowiedni guzik dostajesz za darmo +20% do mocy pedałowania, ale spróbuj nie odblokować takiego "sztywniaka" na najbliższym zjeździe: leżysz i płaczesz albo przynajmniej zostajesz w tyle. No, tak to działa. I właśnie tam przyda się automatyka: do wyczuwania ogólnego profilu trasy i usztywniania lub luzowania w zależności od przejeżdżanych odcinków,do blokowania ugięć gdy dochodzi do pompowania itp. To polega jednak na przytykaniu lub otwieraniu poszczególnych zaworów między komorami a nie siłowej walce zastępującej główną sprężynę lub pompowaną komorę. Wstawianie jakichś silników i ich zasilania do walki z grawitacją i próby "unoszenia" roweru są bez sensu. Z tym to akurat amory od dawna radzą sobie bardzo dobrze. Pamiętaj, że w samochodzie masz potężny silnik a w rowerze każdy gram musi być przesunięty czy wciągnięty na górkę przez użytkownika - to nie jest proste przeniesienie idei, tu nie działają te same pomysły. Niestety, takie modyfikacje o jakich piszę nie leżą w zasięgu amatorów. Nowoczesne amortyzatory już do samego rozmontowania i ponownego złożenia poserwisowego wymagają specjalistycznych narzędzi i wiedzy. Do tego trzeba by zaprojektować i wykonać sterowane zawory pracujące w naprawdę trudnych warunkach a przeciez konstrukcja już i tak jest optymalizowana na masę i wymiary. Tam po prostu nie ma miejsca na rozbudowę. No chyba, że ktoś ma warsztat z CNC i ogromne dośwadczenie w mechanice i rowerowaniu - ale czy wtedy jest jeszcze amatorem? Mam nadzieję, że powyższe potraktujesz nie jak podcinanie skrzydeł tylko jak spojrzenie kogoś z boku, kto używa tego rodzaj sprzętu i coś tamo jeżdżeniu wie. Oczywiście, kiedyś musiał powstać silnik spalinowy a pierwszy to pewnie nie podziałał dłużej jak kilka minut. Pierwsze samoloty nie latały w ogóle a pierwszy rower nie miał napędu i był z drewna. No i niestety to właśnie na takim poziomie będzie Twoje rozwiązanie, jeśli w ogóle zbudujesz coś działąjącego. I dlatego warto się zastanowić, czy chcesz na to poświęcić czas i pieniądze. Oczywiście własne doświadczenia, zdobyta wiedza i satysfakcja są bezcenne, ale prędzej czy później przychodzi podsumowanie i refleksja. Przemyśl to raz jeszcze, policz coś może, bo masz wystarczająco dużo narzędzi i wiedzy dostępnej na wyciągnięcie ręki by temat przepracować teoretycznie i samemu ocenić, czy Twoje założenia są w ogóle realizowalne.
  16. 3 punkty
    Tak, tylko to jest znów pewien przypadek szczególny w którym liczby jakie dodajesz do ułamkowego akumulatora fazy (tak, to jest właśnie on ) będą miały postać 1/2, 1/3, 1/4, 1/5 itd. Wtedy rzeczywiście będziesz odczytywał tę samą próbkę 2, 3, 4, 5 itd razy, ale po co się ograniczać? Ani to w niczym nie upraszcza programu ani nie umożliwia generowania częstotliwości w szerokim zakresie z małym rastrem. A jeśli chcesz mieć krok 0.625 (czyli 5/8) albo 2.828125 (czyli 2 i 53/64)? Obie te liczby mają skończone rozwinięcie dwójkowe na mniej niż 8 bitach i zaaplikowane do naszego DDSa z bezwzględną precyzją dadzą odpowiednio 97.65625Hz i 441.89453125Hz. A przecież to prosty programik z jedną, 16-bitową zmienną licznika gdzie za pomoca trywialnego dodawania niecałkowitych kroków dostajesz zakres od 0.61Hz (0x0001) do 2.5kHz (0x1000) z rastrem 0.61Hz. Pomysł jest tak prosty i efektywny, że żal go nie wykorzystać, prawda? Jak rozumiem Twój pomysł polega na tym, że po prostu odliczamy co ile próbek wysłać kolejną pozycję z tablicy. Zadziała, ale nie wiem co to daje, bo ani to prostsze ani lepsze. Akumulator fazy robi to, i wiele więcej. Wszystko zależy od liczby jaką dodajesz. Bardzo istotnym elementem DDSa jest analogowy filtr wyjściowy. Musi to być porządnie zrobiony układ tnący ostro trochę poniżej połowy częstotlwości próbkowania. W prostych zabawkach można stosować jakieś kondensatorki i oporniki, w lepszych urządzeniach dawać filtry aktywne a w tych najbardziej wypasionych trzeba sięgać po scalone filtry z przełączanymi pojemnościami. Takie coś kosztuje z 10 USD, ale za to jest filtrem Czebyszewa np. 8 rzędu więc tnie ostro, a jego częstotlwość ustalasz zegarem cyfrowym. Bez takiego stopnia wyjściowego DDS produkuje przebiegi bardzo zniekształcone i zawierające sporo harmonicznych, których zawartość jest niestety różna w zależności od ustawionego kroku. Tak więc niektóre częstotliwości z DDSa będą ładniejszą sinusoidą a niektóre będą poszarpane, co jest chyba zgodne z intuicją. Filtr analogowy to wycina i każdemu daje równą szansę Przy okazji: puszczając kilka DDSów równolegle, korzystających oczywiście wspólnie z tego samego przerwania od jednego timera i tym samym jednej, wspólnej częstoliwości próbkowania oraz sumując ich sygnały wyjściowe jeszcze w procesorze, można zupełnie spokojnie zrobić polifoniczne organki np. na Arduino mogące grać rozbudowane akordy a nie tylko "Wlazł kotek na płotek" jednym palcem. A mając kilka tablic różnych sygnałów, można łatwo przełączać "brzmienia", bo jednak czysta sinusoida jest akustycznie mało ciekawa..
  17. 2 punkty
    No tak, z komparatora można prosto wiele fajnych rzeczy zrobić. Przez proste modyfikacje możesz wydłubać układ opóźniający załączanie diody, jej wyłączanie, włączenie tylko na jakiś czas albo mrugający. Pamiętaj tylko, że historyczne już dzisiaj LM311 i wszyscy jego rówieśnicy mają ograniczony zakres zmian napięcia wejściowego. Najlepiej gdybyś trzymał się na obu wejściach co najmniej 2V od górnego zasilania, więc jeśli masz Vcc=5V to tą swoją referencję ustaw nie wyżej niż 3V. Od dołu też słabo, choć 0.5V wygląda dużo lepiej. Dziś są komparatory z wejściami tzw. RR (rail-to-rail) czyli mogące pracować od GND do swojego zasilania a nawet szerzej, no ale to nie ten przypadek.. Powodzenia, daj znać jak poszły eksperymenty. W temacie komparatorów koniecznie poczytaj o histerezie - to kluczowe rozwiązanie poprawiające stabilność w praktycznych układach.
  18. 2 punkty
    gorzki, to tak nie działa. Jeżeli z powodu braku wiedzy zrobiłeś prostą taczkę i pytasz jak ją zmodyfikować by mieć na podwórku samochód to sam rozumiesz, że żadnych konkretów nie dostaniesz. Nawet gdyby ktoś zaczął mówić o przekładniach różnicowych, skrzyni biegów, zawieszeniu, półosiach, karoserii samonośnej czy silniku 4-suwowym to i tak wiele z tego nie wyniesiesz gdy umiesz jedynie połączyć koło ze skrzynką na pomidory. Jedyna rada to wziąć się w garść, zacząć lekcje programowania od początku, robić przykłady od najprostszych do coraz trudniejszych aż nabędziesz wprawy i zrozumiesz jak korzystać z procesora tak, by wszystkie jednoczesne potrzeby Towjego projektu były zaspokojone. Nie twierdzę, że to rocket science, ale kilka dni z Arduino to nie jest wystarczająca baza do robienia takich rzeczy. Nie na darmo proste projekty opierają się na sekwencyjnym wykonywaniu jednego ciągu instrukcji - to jest łatwe. Równoległość wymaga zmiany podejścia i zupełnej zmiany myślenia o strukturze programu. Tak, ludzie korzystają z millis(() i jest to jedna z możliwości. Nie jest to wytrych do wszystkiego, ale też nie jedyna opcja. Było tu wiele wątków o tym samym. Jeśli bardzo się napaliłeś i od razu chcesz skoczyć do basenu, przeszukaj Forum pod tym kątem (znaczy wielowątkowości, równoległości i millis a nie skakania do wody rzecz jasna). Nie ma sensu każdemu opisywać tego samego. Na start: I jeszcze pamiętny wątek SOYER'a, w którym Elvis z dobrym skutkiem (i podobną cierpliwością) tłumaczył działania równoległe: Poczytaj, przemyśl, przygotuj się teoretycznie, popróbuj coś samemu i dopiero wtedy w razie problemów, pytaj.
  19. 2 punkty
    Dostępna jest już kolejna wersja układu wyposażona w pełni funkcjonalny interfejs UART. Poza tym dodane zostały nowe rozkazy dla ALU oraz sam kod procesora został zaktualizowany. Na moim blogu można dowiedzieć się więcej na temat budowy układu oraz pobrać projekt.
  20. 2 punkty
    Teraz będzie więcej programowania po stronie RaspberryPi. Kinematyka odwrotna, na razie na płaszczyźnie.
  21. 2 punkty
    Nie różnią się, w tabelkach masz wartości maksymalnie dokładne a na wykresie tylko zaokrąglone do sensownej liczby cyfr znaczących. Przecież nie będziesz w programie używał współczynnika -462.4617423 bo ważne sa w nim co najwyżej trzy pierwsze cyfry, reszta to szum. Skoro wartości odczytujesz z wyświetalcza 3-cyfrowego a sam miernik ma pewnie 2% dokładności to dalsza matematyka sama nie wyprodukuje lepszych danych. Możesz spokojnie używać wzoru i współczynników z wykresu.
  22. 2 punkty
    Podejrzewam, że traktujesz wyświetlacz jak notatnik na kolejne znaki. Wciągając z klawiatury jedną cyfrę wypisujesz ją od razu na wyswietlaczu korzystając z tego, że automatycznie przesuwa się kursor a kolejne wpisy będa pojawiać się coraz bardziej na prawo. No i teraz brakuje Ci "zjadania" już pokazanych znaków i cofania kursora. Moim zdaniem, zamiast bazować na pewnej własności wyświetlacza (i narzekania że brakuje jakiejś innej) zupełnie zmień podejście. Potraktuj wyświetlacz tylko jako ekran ppokazujący za każdym razem wszystko co już zgormadziłeś. Zrób sobie zatem jakiś bufor (tablicę znaków) w pamięci RAM wypełniona na początku spacjami. Potrzebny też będzie wskaźnik, indeks do tej tablicy, który będzie odpowiadał za pozycję wirtualnego kursora. Po otrzymaniu kolejnego znaku z klawiatury podejmujesz decyzję czy jest to: kolejna cyfra PINu znak końca (Enter?) znak wycofania (Backspace?) W pierwszym przypadku wstawiasz znak do tablicy w miejsce wskazane przez indeks i popychasz go do przodu, o ile oczywiście nie osiągnął końca tablicy. W drugim kończysz całą zabawę i zaczynasz analizować wczytany PIN - wiesz ile masz znaków, bo tę liczbę wskazuje pozycja indeksu/kursora. W trzecim najpierw cofasz indeks o 1 pozycję (o ile nie stoi już na początku tablicy) i wstawiasz tam spację. To wszystko. Dopiero teraz wypisujesz od razu całą tablicę na LCD (zaczynając zawsze od tego samego miejsca na ekranie) i umieszczsz jego kursor w miejscu wskazanym pzez indeks tablicy. Dzięki temu możesz robić cuda ze znakami (np. przesuwać kursor po znakach, robić insert wewnątrz tekstu, kasować wszystkie naraz itp) byle tylko były do tego odpowiednie klawisze. Ani razu nie korzystasz z jakichś dziwnych cech wyświetlacza ani biblioteki LCD, bo jedyną rzeczą jakiej potrzebujesz to wypisanie kilku/nastu? znaków i ustawienie kursora. Wszystkie "sztuczki" robi procesor na swojej tablicy, a ten ma możliwości prawie nieograniczone. Spróbuj takiego podejścia i pokaż nowy kod. Zacznij od stworzenia tablicy znaków, wypełnienia jej spacjami i wypisania całości na LCD. Potem po kolei zajmiesz się obsługą zwykłych cyfr, Entera i Backspace. Powodzenia
  23. 2 punkty
    Cześć, nic ci nie umknęło:D, ja też się nad tym zastanawiałem, gdzieś w tym wątku, bodajże na początku, Treker podał link do video na yt, tam to ktoś ładnie wytłumaczył dlaczego to tak działa
  24. 2 punkty
    Dzięki @FlyingDutch, sam też ostatnio szukałem trochę informacji na temat przejścia z Spartana3 na Spartana6. Podrzucam tutaj kilka linków związanych z tym tematem dla osób które, tak jak ja napotkały pewne problemy z przejściem na układ Spartan6. https://www.xilinx.com/support/answers/33210.html https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_5/spartan6_hdl.pdf https://forums.xilinx.com/t5/Welcome-Join/Asynchronous-Set-or-Reset-for-Registers-of-Spartan-6-FPGA/td-p/478370 https://forums.xilinx.com/t5/Spartan-Family-FPGAs-Archived/migration-spartan-6-from-spartan-3/td-p/543651
  25. 2 punkty
    Tym razem świetnie Gdy rysujesz schemat to jakbyś pisał list do św. Mikołaja. Każda litera i każdy element są po coś. Tworzą wyrazy i zdania a wszystko razem zaczyna być zgrabnym tekstem. I jeśli chcesz dobrze wypaść (bo nowa konsola bardzo by się przydała), to musisz przemyśleć co napisać i w jaki sposób. Tutaj tak samo. Jeśli nie wiesz po co jest dany element, to całość zaczyna wyć i przestaje do siebie pasować. Ten 100uF nie jest niezbędny. Nie wiem z czego będziesz zasilał ten zestaw, ale kondensatory na zasilaniu są po to, by kompensować indukcyjności długich kabli. Dzięki temu impulsy prądu pobierane przez układ cyfrowy - bardzo krótkie i bardzo ostre, nie muszą płynąć z odległego zasilacza tylko są "dostarczane" z pobliskiego kondensatora. Na pewno każdy scalak cyfrowy lubi mieć w pobliżu jakieś dobre, szybkie, ceramiczne 100nF i to jest kluczowe. Elektrolity są sporo wolniejsze i w zasadzie "nie nadążają" za nanosekundowymi impulsami prądu potrzebnymi brameczkom i przerzutnikom do pracy. Także to dorysowane 100uF może w tym przypadku być (nie zaszkodzi), ale nie musi (i niewiele pomoże jeśli nie zrobiłeś 2 metrowych kabli). Jeśli dobrze liczę to mamy tylko 7 diodek LED. Czy któreś wyjście rejestru uważasz za mniej ważne? To nie jest błąd, tylko pytam. Skoro układ jest 8-bitowy to chyba fajnie byłoby podglądać wszystkie jego wyjścia Q0..Q7. Układy rodziny 74HC mają szeroki zakres napięć zasilania więc możesz to napędzać czymkolwiek z zakresu 3-5V. Nawet wprost akumulatorem LiPol 3.7V, dwoma lub trzema paluszkami choć najbezpieczniej jednak mieć w domu jakiś regulowany i kontrolowany zasilacz. Albo od biedy nawet 5V z jakiejś ładowarki USB. Dzisiejsze diody LED z 5V świecą ładnie już przy opornikach rzędu 1k więc nie musisz tak zamęczać wyjść biednego rejestru prądami po kilkanaście mA. Tym bardziej, że to sporo przekracza katalogowo dopuszczalne prądy tej rodziny. I jeszcze na koniec: to filtrowanie jakie zrobiłeś (i jakie opisałem) na wejściach zegarowych nie jest teoretycznie poprawne. Kondensatory i oporniki tworzą filtr przeciwzakłóceniowy i to dobrze bo wycinają wielokrotne odbicia zestyków, ale jednocześnie sygnały są dużo wolniejsze. Zbocza, zamiast kilku nanosekund typowych dla układów cyfrowych mają teraz czasy narastania tysiące razy dłuższe - rzędu milisekund. A wejścia zegarowe rejestrów, a szczególnie np. liczników za tym nie przepadają. Bo skoro ktoś zrobił je czułymi na zbocze, to niech to zbocze ma jak najkrótszy czas i będzie jak najbardziej "ostre". Do uformowania takiego poprawnego sygnału musiałbyś jeszcze coś dołożyć, ale to opowieść na inny wieczór. Załóżmy, że to co masz zadziała a gdybyś chciał eksperymentować z innymi układami logicznymi (liczniki, sumatory, rejestry, przerzutniki itd..) to warto zrobić sobie (chyba się powtarzam) a) moduł kilku dobrze odfiltrowanych przycisków z regeneracją zboczy oraz b) płytkę z kilkoma (10?) LEDami wyposażonymi w tranzystory lub inne wzmacniacze. Wtedy podłączenie takiego wskaźnika nie powoduje paskudnego obciążania wyjść (jak tutaj) i sygnał logiczny na takim wyjściu jest wciąż poprawny i zrozumiały dla innych układów. Podczas zabawy, gdy na jakimś wyjściu będzie stan 1 możesz zmierzyć multimetrem napięcie wyjściowe bez i z dołączoną diodą LED. Ciekaw jestem Twoich wyników, no i ogólnie wniosków z tego całego zamieszania. Mam nadzieję, że nie zniechęciłeś się początkowymi trudnościami
  26. 2 punkty
    Ja używam do dużych uC Atmega16/32/644/1284 https://github.com/MCUdude/MightyCore.
  27. 2 punkty
    Cześć Rafał, zmian jest bardzo dużo poczynając od budowy podstawowych komórek logicznych czyt bloków DSP po prędkości pracy poszczególnych modułów FPGA. Nie mogłem znaleźć jakiegoś bezpośredniego porównania Spartan3 z Spartan6 opisującego wszystkie zmiany, więc najlepiej po prostu korzystać z kart katalogowych dla obu rodzin układów FPGA. Niemniej istnieje dokument firmy Xilinx dotyczący problemów związanych z przejściem od starszych modeli FPGA na Spartan6. Jego tytuł to: Targeting and Retargeting Guide for Spartan-6 FPGAs Tutaj link do tego dokumentu: https://www.xilinx.com/support/documentation/white_papers/wp309.pdf Pozdrawiam
  28. 2 punkty
    A liczyłeś zapotrzebowanie na energię? Bo z prostego rachunku, gdy wszystkie diody świecą na biało wychodzi 144*3*0.02A*5V*1h = 43Wh a to wydaje się na styk z tym co masz w ogniwie. Szkoda, że sami nie podają energii, ale przybliżając masz: 3.2V*15Ah = 48Wh. A gdzie jeszcze jakieś sprawności przetwornic, marginesy bezpieczeństwa, cyfrówka, radio itd? Moim zdaniem dopiero zapas 50% zaczyna wyglądać obiecująco. EDIT: Ale podają gęstość mocy (100Wh/kg) i masę ogniwa (480g) a z tego prosty wniosek: strzelałem dobrze, 48Wh
  29. 2 punkty
    Przede wszystkim: zastosuj jakąś płytkę typu NodeMCU albo coś na ESP32 zamiast tandemu Arduino-ESP01. Przynajmniej jak się zawiesi to po chwili zrobi reset, a przy okazji masz jedno ustrojstwo a nie dwa. Do tego coś bardziej pewnego niż DHT22. No i zastanowiłbym się jednak nad termostatem mechanicznym jako ostatnią deską ratunku...
  30. 2 punkty
    Mają też mikrokontrolery na swoich portach i wiele innych scalaków na niektórych wejściach, ale co to ma wspólnego z rodzinami układów logicznych 74... ? Jeśli, biedaku, tego nie odróżniasz to nadszedł dobry moment by więcej czytać niż pisać. Na wymądrzanie się jeszcze przyjdzie czas a teraz, dla dobra nas wszystkich, skup się na edukacji, bo to nie pierwsza Twoja porada od czapy. A jeśli już siadasz do klawiatury to najpierw zastanów się dwa razy czy masz coś nowego do dodania w temacie. Jeśli masz wątpliwości (lub nie znajdujesz tego "w necie"), odpuść - nieodzywanie się w tematach o których masz słabe pojęcie to naprawdę przydatna (i niestety coraz rzadsza) cecha. Inaczej zalewasz ludzi pozorną wiedzą, której oni bez doświadczenia nie są w stanie odróżnić od tej prawdziwej i tym samym wpędzasz ich w jeszcze głębsze zagubienie. Owszem, są takie miejsca w sieci, gdzie plecenie trzy po trzy jest to cenna umiejętność, ale na szczęście to nie Forbot. Także: wolniej, więcej namysłu i tylko to, czego jesteś pewien - wtedy zbudujesz sobie autorytet. To nie wyścig na liczbę wpisów a ja zacznę przyglądać się Twoim postom i nie każ mi ich minusować. Czerwone krawaty wyszły z mody już dawno. BTW: W Polsce to ani "suwak" ani "przesuwny" - to jakaś żałosna twórczość. Nie przesuwasz rejestru tylko on przesuwa bity więc jeśli już, to rejestr przesuwający.
  31. 2 punkty
    Kod jest absolutnie błędny. Masz coś takiego: jeśli naciśnięto przycisk 1, załącz przekaźnik i poczekaj dwie sekundy nie reagując na nic a jeśli nie naciśnięto przycisku 1, wyłącz przekaźnik Na pewno tak chciałeś?
  32. 2 punkty
    Jako zawodowy programista Qt bardzo ucieszyłem się, że na tym portalu pojawił się taki poradnik. Uważam, że Qt ma wielki potencjał i fajnie, że teraz społeczność Forbota będzie mogła się o tym przekonać. Chciałbym dodać, że Qt ma takze bindingi do Pythona, także, jeżeli ktoś niekoniecznie lubuje się w C++ to zawsze mozę skorzystać z PyQt. Planujesz poruszyć temat QML i QtQuick? Zakładając, ze przy pracy po WiFi łączymy się bezpośrednio z urządzeniem (aplikacja <-> urządzenie) i chcemy przerobić to na (aplikacja <-> serwer <-> urządzenie) to tak naprawdę wystarczy napisać prostą aplikację serwerową w Qt (wykorzystując np. QTcpServer). Idea jest prosta, serwer ma tylko pośredniczyć pomiędzy urządzeniem a aplikacją. Urządzenie będzie wysyłało dane na adres serwera a serwer tylko przekaże je do aplikacji (która również połączy się z serwerem). Nie mam gotowego snippetu kodu, ale w dokumentacji Qt jest kilka przykładów odnośnie wykorzystania QTcpServer i QTcpSocket.
  33. 2 punkty
    Moim zdaniem nie ma tu żadnej magii. Zacznij od tego, że do wspomnianego kalkulatora wpisz wartości 12, 4, 2 layer. Czyż nie dostałeś modelu tego, co masz na zdjęciu? Małe "+" i "-" wewnątrz drutów oznaczają kierunek płynięcia prądu a może bardziej.. hm, sposób nawinięcia uzwojeń: przykładowo drut czerwony "idzie w naszą stronę" gdzie ma plus i "wraca za ekran" gdzie ma minus. To samo z pozostałymi dwoma kolorami/fazami uzwojeń.Taki silnik ma cogging steps = 12 co oznacza, że kręci sie dwa razy wolniej niż pokazałeś na swoim schemacie. Zamiast 6 wycinków i skoków wektora pola o 60° powinieneś narysować 12 sektorów i skoki co 30°. Dlaczego? Właśnie dlatego, że na wirniku nie masz jednego magnesu z dwoma biegunami tylko dwie pary z czterema a specyficzny sposób nawinięcia uzwojeń powoduje, że tak "umagnesowiony" wirnik nie będzie przeskakiwał za każdą komutacją aż o 60°, bo już za 30° czeka go "bardziej pociągające" pole ortogonalnej pary jego magnesów. Spróbuj może np. wyciąć sobie z papieru wirnik z zaznaczonymi biegunami N/S/N/S i poobracać go w polu narysowanego i 6-krokowo komutowanego stojana A czujniki? Muszą ślepemu wskazać drogę, bo stanowią jedyny system odniesienia dla kontrolera. Ten musi zrobić komutację wtedy gdy "elektrycznie" wirnik obróci się o każde 60°. To oznacza, że odległość "elektryczna" czujników musi wynosić dokładnie 120°. Na razie pomijamy fazę czyli wspólny offset względem uzwojeń. Te 120° w skrajnym przypadku, dla silnika np. 48/28 oznacza, że hallotrony musiałyby być rozmieszczone obok siebie co ok. 360°/56/3= 2.14° bo tyle zajmuje wirnikowi 1/3 pełnego kąta "elektrycznego" w tym silniku. Oczywiście nie trzeba ich mechanicznie upychać tuż obok siebie, bo ta sama sytuacja powtarza się co 360°/56=6.43° więc można je rozsunąć by montaż był wygodniejszy i poprzyklejać je tak, by dla niewprawnego oka były co jakieś 120°. W tym konkretnym przypadku czujniki musiałyby być wstawione bardzo precyzyjnie, bo przy "pełnej skali" 6.43°, już odchyłka o 0.1° byłaby wyczuwalna w sprawności i kulturze pracy silnika. Widać od razu, że silniki mające podział przez 2 , 3 czy 4 są dużo mniej kłopotliwe w umieszczaniu czujników i kosmiczne precyzje nie są w nich konieczne. A jeśli nie wiesz gdzie konkretnie umieścić czujniki (i nie umiesz tego zamodelować i policzyć - ja na pewno nie umiem), to wystarczy wstawić jeden hallotron i zakręcić silnik palcem. Przebieg back-EMF (jej przejście przez zero) na oscyloskopie pokaże idealny punkt komutacji dla wolnych obrotów. Przesuwasz zatem czujnik w przód/tył tak by pokryć fazy obu sygnałów i tyle. Oczywiście pozostałe czujniki muszą być (wciąż "elektrycznie") dalej co 120°. I tak chcąc zachować wysoką sprawność, maksymalny moment, dynamikę i kulturę pracy (hałas) danego silnika w szerokim zakresie prędkości, kontroler będzie musiał dobierać i przesuwać punkt rzeczywistej komutacji faz na podstawie jakiejś tablicy lub wzoru wiążącego wyprzedzenie z prędkością obrotową. Właśnie taki programowany parametr (np. wyprzedzenie agresywne, normalne, delikatne) ma większość kontrolerów uniwersalnych, które w po wyjściu z fabryki nie wiedzą do jakiego silnika ktoś je podłączy.
  34. 2 punkty
    W przypadku komunikacji bezpośrednio po TCP/UDP, bez żadnych "chmurowych" serwerów, np PC<->ESP8266 komunikacja przebiega praktycznie jak po każdym interfejsie, czy to comporcie, bt czy spi. W przypadku architektury embedded <-> chmura <-> pc/telefon warto skorzystać z jakiegoś brokera, np. mqtt. Wtedy stawiamy sobie na serwerze broker mqtt, potem każde urządzenie (serwer/pc/telefon/embedded) subskrybujemy do danego tematu na serwerze i tak naprawdę najgorszą robotę przesyłania wiadomości odwala za nas rzeczony broker - a libki do mqtt są praktycznie na każdą platformę, zazwyczaj takie "eventowe" - przychodzi wiadomość, wywołuje się callback i w zależności jaka to wiadomość coś tam sobie w kodzie robimy. Analogicznie jak wywołanie slotu w qt. EDIT: W QT 5.12 jest już MQTT natywnie więc nie trzeba żadnych dodatkowych bibliotek.
  35. 2 punkty
    Dokładnie takie proste sterowanie pojawi się w kolejnych częściach, najpierw za pomocą aplikacji na desktopie i portu szeregowego a w kolejnej części za pomocą aplikacji w telefonie i BT.
  36. 2 punkty
    Protokół po CAN mam po swojemu. Używam CAN EID do adresowania nodów, urządzeń w ramach jednego node-a, typu wiadomości i operacji: * bity 0-7 -- device number (numer czujnika, etc) * bity 8-17 -- adres node-a (0-1023) * bity 18-20 -- typ operacji - coś w stylu get/set/query/etc * bity 21-28 -- type wiadomości -- czujnik temperatury, wykrycie ruchu, etc. Zostaje więc do 8 bajtów do przesłania danych (temperatura/kolor diody RGB, etc). Dlaczego tak? W CAN najwyższe id ramki ma najwyższy priorytet - więc w przypadku kolizji najpierw powinny być wysłane informacje o zdarzeniach typu wykrycie ruchu, etc. (nie spodziewam się tylu zdarzeń i tak krytycznych ale jakoś trzeba było to zorganizować). Jestem w trakcie przepisywania mojego skrypciku can2mqtt.py na ładniejszą i bardziej uporządkowaną wersję. Umieściłem jego aktualną wersję (nie do końca gotową) na github-ie: https://github.com/sadziu82/can2mqtt. Jeśli zaś chodzi o problem 'włączania światła w łazience' przy padzie RPi to u mnie działa to w ten sposób, że każdy node posiada swoje własne/lokalne zdarzenia. Więc jeśli nawet cała szyna CAN nie działa to każdy node zachowuje swoją podstawową funkcjonalność (typu włączenie/wyłączenie lokalnego światła po naciśnięciu przycisku) - informacje o zdarzeniach lokalnych są wysyłane do sieci CAN więc jeśli wszystko działa HA zauważy, że ktoś nacisnął przycisk i wlączyło się światło i uaktualni stan przełącznika.
  37. 2 punkty
    Czyli moje wnioski się potwierdzają: nie rozumiesz działania pętli prądowej, nie rozumiesz tego co piszą koledzy i ja także, nie odróżniasz opornika szeregowego od dzielnika napięcia, wykonujesz jakieś bezsesnowne pomiary i próbujesz z nich wyciagać ruskie wnioski. Moje rady: zapomnij o dzielniku - tak, kupiłeś go bez sensu i możesz go wywalić do kosza lub schować do szuflady, zrób jak powiedziałem (przeczytaj jeszcze raz co napisałem i wykonaj punkty literalnie jeden po drugim - to wydaje się proste, nieprawdaż?), ciesz się wynikami. Jak rozumiem prośba o kawałek kodu przeliczającego na razie pozostanie taktownie niezauważona. BTW: "Multimetr z najwyższej półki" nie zwalnia od myślenia. A ten układ (jeden opornik) uruchomisz multimetrem za 20zł. Wystarczy tylko rozumieć co musisz zmierzyć i po co. BTW2: Zanim cokolwiek odpiszesz, usiądź spokojnie i zastanów się co to jest źródło prądowe w kontekście omawianego przypadku. Poświęć na to 120 sekund myślenia bez grzebania w sieci i korzystania z komputera. Ręce z klawiatury, słyszałeś? Jeśli poszło słabo, zacznij szukać i czytać - to kluczowe do tego byś zrozumiał problem i nie zadawał kolejnych śmiesznych pytań.
  38. 2 punkty
    Nie wygłupiaj się. Nie potrzebujesz żadnych kupowanych "dzielników napięcia". Nie każdy problem musisz rozwiązywać metodą wyszukiwania w sklepie gotowca zgodnego z zasłyszanym hasłem. Czasem warto włączyć myślenie. Zacznij zwyczajnie: od zrozumienia jak działa to co chcesz kupić, czyli sam czujnik. Jest zasilany z sieci 230V i ma wyjście 4-20mA. To oznacza, że będzie z siebie wypuszczał prąd, który musisz zmierzyć. Kolega adam30010 już tłumaczył, ale chyba niewiele dotarło skoro jedyną odpowiedzią jest link do jakiejś bzdurnej płyteczki. Arduino ma wejścia napięciowe więc musisz przetworzyć płynący, nieznany prąd na napięcie. A to robisz przy pomocy jednego opornika. Wystarczą dwie liczby: maksymalny prąd 20mA i napięcie jakie wtedy chcesz dostać - powiedzmy 4V, bo zakres typowego Ardunio to 5V więc masz jeszcze margines bezpieczeństwa. Do tego wzór: R = U/I czyli R= 4V/0.02A czyli R=200Ω Koniec, zaprojektowałeś niniejszym przejście z prądu na napięcie. Zatem: kupujesz jeden opornik 200Ω włączasz go w pętlę wyjściową swojego miernika przewodności (zaciski +/- 4-20mA) do opornika podłączasz woltomierz/multimetr ustawiony na zakres 20V weryfikujesz odczyty przez zanurzanie sondy do jakichś znanych płynów i zapisywanie napięcia podłączasz zamiast woltomierza Arduino (któreś wejścia analogowe do drutu opornika połączonego z zaciskiem "+4-20", GND Arduino do drutu na zacisku "-mA") piszesz kawałek kodu mierzący i przeliczający ADC na przewodność i wyświetlasz to gdzieś lub zapamiętujesz lub wysyłasz np. do PC. Co w ogóle chcesz z tym zrobić? Jeśli urządzenie będzie pracowało w trudnych warunkach (długi kabel, jakies maszyny niedaleko itp) to możesz pomyśleć o elementach zabezpieczających delikatny pin procesoora: dioda Zenera lub dwie diody Schottky. Tak więc przestań kombinować jak koń pod górę tylko idź do jakiegoś kolegi elektronika lub do pracowni w szkole, weź (jeśli nie kupiłeś sobie wcześniej zestawu setek oporników za 15zł) jeden opornik 200Ω kosztujący 1 grosz bez wysyłki, podłącz i miłej zabawy. BTW: Jedyna ciekawa w tym rzecz to przeliczanie z pomiaru ADC na wynik w µS. Możesz pokazać kilka linii kodu wykonujących to zadanie. Z tego wyjdzie, czy rozumiesz co robisz.
  39. 2 punkty
    Owszem jest Tutaj: odczytL = map(odczytL, 10, 1020, 1, 5); odczytR = map(odczytL, 10, 1020, 1, 5); Widzisz?
  40. 2 punkty
    Fajny projekt, wprawdzie ja korzystam z BLYNKa i ciężko byłoby mnie namówić na zmianę, ale wielkie gratulacje:-)
  41. 2 punkty
    Nie wiem, w ogóle tego nie rozumiem. Co to znaczy? Ciągle czyli co 5ms, ale uśrednianie za ostanie 100ms? Czy ciągle oznacza raz na 100ms? Wiesz, to trochę jest tak: jeśli nie chce Ci się wysilić i dokładnie opisać funkcjonalności swojego programu, to nikomu nie będzie się chciało odpowiadać na mętne pytania, bo to strata czasu i można strzelić kulą w płot. Ja mogę jedynie przepisać te moje punkty bardziej na C, może to w czymś pomoże: 1. Stwórz tablicę/bufor na 20 wyników pomiarów: #define FILTER_LENGTH 20 uint16_t filter_core[FILTER_LENGTH]; 2. Zrób miejsce na nowy wynik na początku tablicy, przesuwając jej zawartość o 1 pozycję w górę. Najstarszy wynik (ten w ostatniej komórce) tym samym ulega zapomnieniu: for (uint8_t n=FILTER_LENGTH-1; n>0; n--) filter_core[n-1] = filter_core[n]; 3. Zrób pomiar i wstaw go do pustego miejsca w tablicy: filter_core[0] = analogRead(CURRENT_CHANNEL); 4. Policz średnią przez zsumowanie i podzielenie przez długość tablicy i użyj jej jak uważasz. Uwaga: 16-bitowa zmienna sum pomieści maksymalnie sumę co najwyżej 63 pomiarów ADC więc bez jej wydłużenia tylko taki filtr możesz tutaj obsłużyć: uint16_t sum = 0; for (uint8_t n=0; n<FILTER_LENGTH; n++) sum += filter_core[n]; sum /= FILTER_CORE; 5 Tu jest "dalsza część programu".. czyli korzystasz ze zmiennej sum, np. przeliczasz ją na fizyczne Ampery, coś tam włączasz lub sterujesz itp. 6. I tu wracasz do początku. Jeżeli zapewnisz, by całość programu będzie się wykonywać powiedzmy 5ms a filtr ma długość 20 to średnia będzie liczona za każdym razem za ostatnie 100ms, proste. Czy to jakoś rozjaśnia mroki?
  42. 2 punkty
    Pieniądze się zawsze znajdą, tylko trzeba chcieć widzieć potencjalne zagrożenia i chcieć im przeciwdziałać. Żeby nie walić pięściami tylko w jankesów. Powiedzcie mi jakie pochodzenie ma program antywirusowy na literę K zainstalowany we wszystkich polskich urzędach? Jakie pochodzenie ma gra o czołgach zainstalowana na milionach komputerów na całym świecie. Ten mój BLYNK ulubiony to kto wymyślił? Paranoja powiecie? Ja powiem, że byłoby głupotą nie korzystanie z takich możliwości. Wszyscy którzy sobie z tego zdają sprawę, korzystają. Właśnie sprawa chęci i możliwości. Z jakich dronów korzysta straż graniczna USA?? Nie zgadniecie, nazwa trzyliterowa, właśnie odkryli, że te maszynki wysyłają co nieco w stronę Pekinu. Trzyliterowy koncern zapowiedział, że w nowych wyrobach będzie można zablokować takie "dzielenie się informacjami". Tak więc nawet najlepszym zdarzają się takie wpadki;). Akurat tej wojny nie zaczęli Amerykanie, raczej nerwowo zareagowali jak udało się im połapać co się dzieje...
  43. 2 punkty
    Odpowiednie. To jedyna poprawna odpowiedź na taki problem. Napisz coś więcej, np. jakie prądy mają przewodzić, jakie prądy przeładowania przewidujesz, częstotliwość pracy itp. A może to do nauki sterowania takimi tranzystorami i będziesz do tego podłączał wiele różnych rzeczy w ramach nauki?
  44. 2 punkty
    Nie będzie. Do ładowania tego typu ogniw używamy ładowarek, czyli źródeł rozumiejących do czego są i co robią, a nie głupich zasilaczy, w dodatku z za małym napięciem wyjściowym. Zasilacz nie rozumie tego co robi więc skąd wiesz jaki prąd z siebie wypuści gdy podłączysz rozładowane akumulatory? Ma napisane 12V/1A to znaczy, że bezpiecznie możesz z niego pobrać max. 1A i wciąż utrzyma 12V. A jeśli akumulatory ściągną go do 9V to ile popłynie? 2A? 5A? A może się spali po 5 minutach, bo nikt nie przewidział takiego stanu jego pracy? Musisz mieć ładowarkę z kontrolowanym prądem i napięciem, przykro mi, takie są zasady bezpiecznego użytkowania sprzętu. W jakim sensie? Będziesz woził 3 klocki 18650 żeby korzystać z połowy ich pojemności? To od razu wstaw żelowy 12V/5Ah. Żadnych BMSów, ładowarka pewnie z 10zł na aukcji. Taki, by prądowo wystarczył. Nie wiemy czy robot będzie pobierał 10A czy 0.5A. A odłączanie podczas ładowania? To zależy od budżetu mocy ładowarki i poboru prądu przez robota. Pomyśl przez 10 sekund nad rozpływem prądów i sam sobie odpowiedz.
  45. 2 punkty
    Parę lat temu (jeszcze w czasach pierwszych wersji Raspberry) powstał w Hiszpanii wózek inwalidzki sterowany głosem (pocketsphinx). Może coś w tym kierunku? Bo mój sterownik do pieca co prawda potrafi gadać (nawet po polsku), ale sam przestaje grzać jak jest za gorąco (termometr jest jednak tańszy i prostszy w oprogramowaniu )
  46. 2 punkty
    Na ten moment mój serwis wspiera tylko język angielski, ponieważ jest prostszy w "obróbce" (przynajmniej prostszy od polskiego, ale o tym w nadchodzącym poście). Dodam język polski na pewno, natomiast nie zastanawiałem się nad docelowym językiem komunikacji z moim robotem - w sumie fajna okazja do przećwiczenia angielskiego, co w sumie robię w pracy, więc bardziej byłbym za polskim Czat w filmikach jest po angielsku, żeby rozumiała większa ilość osób, o czym się tam rozmawia (przynajmniej wydaje mi się, że tak jest) Super, dziękuję PS: Wspomniałem o poście. Mam zamiar napisać tam nieco szczegółowych informacji o samym procesie przetwarzania tekstu i dać taki punkt startowy dla tych, który się zainteresują. I tutaj mam do Was pytanie, czy bylibyście zainteresowani zrobić też takie sterowanie w Waszych konstrukcjach? Zaznaczam, że to wcale nie musi być robot. Możecie nawet swojemu "asystentowi" (który byłby kawałkiem programu) powiedzieć lub napisać, żeby przestać grzać w mieszkaniu, bo za gorąco Robot, dron, asystent, autonomiczny odkurzacz lub coś, do czego sięga Wasza fantazja.
  47. 2 punkty
    Możliwe że błąd był w syntetyzowanym kodzie i to zblokowało płytkę. Niestety, ale niepoprawna konfiguracja pinów może zablokować generator zegara dla programatora - a objawy idealnie to potwierdzają. Miałem kiedyś taki problem z płytką ElbertV2, pomogło zablokowanie komunikacji z pamięcią SPI podczas załączania zasilania.
  48. 2 punkty
    Mówią jakby Ameryka nie szpiegowała nikogo :] Amerykańska Hipokryzja nie zna granic. Każdy kto używa amerykańskiego oprogramowania o zamkniętym kodzie musi się liczyć ze szpiegostwem (a raczej być tego pewnym). Nie tylko w tym najpopularniejszym jak windows itp. Takie kwiatki znajdowano nawet w linuksie, w kawałkach zamkniętego kodu jak np. w jednym z protokołów szyfrujących udostępnionych przez jedną z amerykańskich agencji na rzecz społeczności ;p Była to dość głośna afera swego czasu. Każdy kto posiada telefon komórkowy jest szpiegowany i to nie tylko smartfon. Telefon taki nie musi być nawet włączony, Już nokia 3210 miała możliwość uruchomienia mikrofonu i podsłuchiwania otoczenia. Wy jako elektronicy i po części programiści powinniście o tym wiedzieć najlepiej. Czasem myślę, że nawet jadąc na bezludną wyspę w samych majtkach i sandałach mogło by się okazać, że jesteś podsłuchiwany oczywiście wszystko dla twojego dobra, bo mogłeś się tam znaleźć nie celowo przecież lub co gorsza próbować się ukryć przed wymiarem sprawiedliwości. Oczywiście, według amerykanów takie szpiegostwo jest ok, bo to przecież wszystko dla naszego dobra i przeciw tym paskudnym terrorystom czy "bandyckim" krajom jak Chiny, czy Rosja. Wszyscy inni oczywiście są jeszcze gorsi jeśli śmią się temu przeciwstawiać i sami zaczynają podsłuchiwać Amerykę, jakież to oni łajdactwa przeciw nim planują. Bardzo dobrze wiedzą o tym, że Amerykanie nie mają honoru i nigdy jeszcze nikomu wojny nie wywołali. Zawsze jedynie napadają na wybrany kraj, bez ostrzeżenia. Grabiąc go i łupiąc. To już ich tradycja począwszy od odebrania ziem tym samym sposobem indianom. Teraz oczywiście robią to zawsze pod przykrywką obrony demokracji i walki z terroryzmem, czy totalitaryzmem. Pytanie tylko, czy to samo w sobie nie jest totalitaryzmem? No ale to już temat na inna dyskusję. Prawda jest taka, że ta cała afera została sztucznie napędzona, aby podciąć nogę chinom i przy okazji mieć pretekst wypowiedzieć im podpisane wcześniej umowy, czy tez w razie potrzeby nakładać różne sankcje. To tylko świadczy o ich desperacji i że wojnę handlową z Chinami przegrywają. To niestety efekt socjalizmu i życia na kredytach trawiących jak rak zachodnie społeczeństwa. Tej wojny w ten sposób nie da się wygrać niestety,
  49. 2 punkty
    Zainstaluj wersję z gita: https://github.com/ChuckBell/MySQL_Connector_Arduino - tam jest jakaś poprawka na ESP32
  50. 2 punkty
    Elecrow robi akcje promocyjną, m.in 10szt pcb za 1$ https://www.elecrow.com/blog/where-do-you-find-the-opportunity-to-experience-the-pcb-service-for-only-0-99-and-pcba-service-30-off/
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...