Zaslal: ne říjen 26 2025, 19:06 Předmět: Servo se zpětnou vazbou 270°
Ahoj, omylem jsem koupil servo bez zpětný vazby DSS-M15S (dělají se 2 typy).
Snažil jsem se to tam dobastlit připojením čtvrtého drátu na běžec poťáku a čekal ve správnou funkci. Minimálně se podle aktuální polohy výstupní hřídele ono napětí mění od 0.3 - 3V. Na 500us puls je ta nejnižší hodnota napětí.
Pokud na to pustím jednoduchý program v IDE umožňující mi zadat polohu přes serial monitor vrací mi to na analogRead nesmyslný hodnoty. Očekával bych tam na nejmenší úhel nejmenší napětí a postupně až ke druhému konci dojezdu serva největší (a nebo opačně) ale není to tak! Vracejí se fakt kraviny.
Založen: Jun 26, 2009 Příspěvky: 1454 Bydliště: Hlohovec (Sk)
Zaslal: ne říjen 26 2025, 19:24 Předmět:
začal by som pomeranim napetia ktoré sa realne vracia do Arduina. Ak je to skutočne 0,3 - 3 V a arduino nameria neičo ine, zjavne maš chybu v programe alebo zapojeni (napr neni spoločná zem)
kam to kurňa davate, aj mozila aj bitdefender mi hlasia problem...
čo tak použiť vlastný google disk?
Založen: Jan 01, 2023 Příspěvky: 2675 Bydliště: Česká Lípa
Zaslal: ne říjen 26 2025, 20:01 Předmět:
V příkladu používáte při přepočtu na napětí referenční hodnotu 5V. Jakou desku Arduina konkrétně používáte a je to opravdu verze 5V a nebo je to verze 3.3V?
Co hlásí problém, jako ten ino zdroják?
K tomu zapojení, jsou tam 4 dráty. napájení 5V, GND, PWM na D9, feedback na A0. Arduino je zapojené do PC přes USB, všechno.
Napětí do A0 jsem teď měřil na 1.5ms je cca 1.5V na 2.5ms 3V na 0.5ms je těch 0.3V.
Serial.print ukazuje něco jinýho. Viz. screen
Valdano: Arduino Nano a nevím co tam má být napsáno jestli 3.3 či 5V
OK. Ale myslím si že to nefachá
S tím osciloskopem si to myslím taky, že tam asi není uplně průběh takový jaký by měl být, a zdroj problému je moje vidlácká úprava serva.
Úpravte si program tak aby načítal a zobrazoval pouze surovou hodnotu z pinu A0 při určitém zadaném úhlu a na dalším řádku pak vypočítanou hodnotu napětí podle vzorečku co tam je . Nic víc pro zjištění chyby nepotřebujete, vypadá to že možná zlobí potenciometr v servu pokud se budou hodnoty z potenciometru plynule měnit tak je v pořádku. Pak si ze surové hodnoty nebo i vypočítané hodnoty napětí podle toho vzorečku vypočítejte jaké dostanete stupně natočení. Osobně na přepočty používám programy jeden co mi umožňuje z vypočítané hodnoty zobrazit jaká surová načtená hodnota odpovídá této hodnotě a druhý pak co mi vypočítá ze surové hodnoty načtené analogovým vstupem Arduina napětí. Raději používám sériový terminál než terminál v IDE někdy jsou hodnoty jiné než je skutečnost vlastní zjištění, například při oživování robotického ramene kde mi zajímali hodnoty napětí na běžci potenciometru jednoho použitého nového serva nakonec byl vadný potenciometr z výroby. Uvedené programy jsou na webu. _________________ www.mojeelektronika.mzf.cz
Naposledy upravil bum dne ne říjen 26 2025, 21:01, celkově upraveno 1 krát.
Založen: Jan 01, 2023 Příspěvky: 2675 Bydliště: Česká Lípa
Zaslal: ne říjen 26 2025, 20:53 Předmět:
Máte tam chybu. AnalogRead musíte číst mimo ten if opakovaně třeba jednou za vteřinu a nezávisle na té podmínce při nastavení pozice, protože ta proběhne jen jednou při zadání pozice přes serial monitor. Servu pak trvá nějakou dobu to přestavení na pozici, ale vy čtete AnalogRead hned poté, a to je příliš brzy a v tom je ten problém.
Zkuste to takto.
kód:
#include <Servo.h>
Servo myServo;
int pos,val;
float napeti;
double dat;
unsigned long cas;
Založen: Apr 02, 2011 Příspěvky: 19926 Bydliště: Nový Bydžov
Zaslal: ne říjen 26 2025, 21:12 Předmět:
A proč to neuděláš klasicky, zpětnou vazbou z potenciomeru do servozesilovače serva? To v servu není úplnej klasickej servozesilovač? Pak stačí zadat jen mikrosekundy a o zbytek se postará knihovna.
Myslím, že odběr motoru serva dělá pulzní úbytky na napájení serva a proto ti to analogový napětí z potenciomeru kolísá. _________________ Jirka
Založen: Jan 01, 2023 Příspěvky: 2675 Bydliště: Česká Lípa
Zaslal: ne říjen 26 2025, 21:21 Předmět:
Tam nejde o kolísání napětí na vstupu A0, ale o to, že čte hodnotu napětí jen jednou při změně pozice a hned po zavolání myServo.write(pos); jenže to volání není blokující tj. nečeká až se pozice serva fyzicky nastaví na žádanou pozici. Tím, že hned poté zavolá AnalogRead() tak přečte hodnotu kdy je servo ještě v pohybu (přestavuje se na tu žádanou pozici) a tím mu chodí náhodné a nesmyslné hodnoty.
Když to udělá tak jak jsem upravil ten příklad naposledy výše tak by měl výslednou pozici vidět po chvíli správně až se servo na tu pozici nastaví tak by hodnota vrácená AnalogRead() měla odpovídat správné žádané poloze.
Naposledy upravil Valdano dne ne říjen 26 2025, 21:25, celkově upraveno 1 krát.
Děkuji že se snažíte poradit, ale já furt nevím co je blbě. Vyhodil jsem výpis napětí a úhlu a dal tam jenom výpis hodnot z převodníku a nevypadá to moc funkčně.
Nikdy jsem v Arduinu (wiring) nedělal, tak se omlouvám, za lamí dotazy.
Kde mám vypisovat tu val proměnnou?
Založen: Jan 01, 2023 Příspěvky: 2675 Bydliště: Česká Lípa
Zaslal: ne říjen 26 2025, 21:29 Předmět:
Pořád to máte špatně. AnalogRead() nesmíte volat hned po zavolání myServo.write(pos); protože to volání není blokující tj. nečeká až se pozice serva fyzicky nastaví na žádanou pozici. Tím, že hned po myServo.write(pos); zavoláte AnalogRead() tak přečte hodnotu kdy je servo ještě v pohybu (přestavuje se na tu žádanou pozici) a tím vám chodí náhodné a nesmyslné hodnoty.
Udělejte to přesně takto viz níže.
kód:
#include <Servo.h>
Servo myServo;
int pos,val;
float napeti;
double dat;
unsigned long cas;
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.