Přenos přes HC-05 narušuje ovládání serva

Awandalor
Příspěvky: 11
Registrován: 30 čer 2019, 17:41
Reputation: 0

Přenos přes HC-05 narušuje ovládání serva

Příspěvek od Awandalor » 30 čer 2019, 17:58

Ahoj, BT - HC-06 z číny (dle AT příkazů bych řekl že to je HC-05), Arduino nano klon. BT připojen napřímo bez děliče.

pokud cokoliv posílám přes BT tak servo cuká, nemusím ani na straně BT "poslouchat" a servo pocukává.

delay má vliv na cukání ale neodstraní ho, zkoušel jsem použít jiný pin k ovládání serva ale nepomohlo, zkusil jsem změnit baudrate BT z 9600 na 19200 ale taky nepomohlo.


Níže uvedený kód funguje bezchybně (BT.print je zakomentované)
Jakmile použiju BT.print tak servo cuká. Má někdo nějaký nápad?


Je to jen část kódu, jinak celé to bude sloužit k testování modelářských BLDC motorů. Ovládání motoru přes ESC, měření odběru proudu, napětí, teploty, zobrazení na LCD + zasílání přes BT do PC (tabletu) a tvorba grafu. Posílání dat přes BT i na LCD bylo ok, měření proudu, teploty taky ok. A když jsem připojil servo a jeho kód tak jsem narazil na problém. Tak jsem to celé začal stavět obráceně, nejprve kód pro servo + HW a vše ok, potom jsem začal přidávat další části kódu a u BT jsem narazil.

Kód: Vybrat vše


#include <SoftwareSerial.h>
#include <Servo.h>

Servo ESC;     // create servo object to control the ESC
int potValue;  // value from the analog pin

SoftwareSerial BT = SoftwareSerial(10,11);

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
  BT.begin(19200);
  Serial.begin(9600);
}

void loop() {
  potValue = analogRead(A3);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
  Serial.println(potValue);
 
  
 // BT.print("Ahoj");        //Servo cuká
 // BT.print(potValue);      //Servo cuká
  delay(100);
}

Awandalor
Příspěvky: 11
Registrován: 30 čer 2019, 17:41
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od Awandalor » 30 čer 2019, 19:15

Když v kodu nakonci ze slova "Ahoj" udělám "AhojAAAAAAAAAAAAAAAAAAAAAAAAA" je cukání mnohem horší servo pulzuje.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od gilhad » 30 čer 2019, 19:24

IMHO to cukámí může mít dva různé důvody:

a) servo cuká - BT může mít odběrové špičky a ovlivňuje napájení serva - změřit (nejlíp osciloskopem), průběh napájecího napětí při cukání serva, dát tam nějaké kondenzátory do napájení pro vykrytí špiček, dát dvě různá napájení, použít lepší zdroj ...
b) servem je cukáno - zápis do BT ovlivní generování řídícího signálu pro servo (používá interrupty, co zablokujou výpočet, zakáže interrupty pběhem nějaké kritické fáze, nebo tak něco) - zase osciloskopem sledovat řídící vsut serva, zda se při vysílání nezmění ty pulzy na něm Pokud ano, tak to rozdělit na dvě Arduina, jedno se bude starat o servo, druhé o BT a navzájem s polu boudou komunikovat a koordinovat se.

c) že by vysílání BT ovlivňovalo řídící elektroniku serva mi přijde nepravděpodobné, že by do analogového vstupu generovalo šum by mělo být vidět na Serial.println(potValue); (že by se měnila i bez točení potenciometrem)

Awandalor
Příspěvky: 11
Registrován: 30 čer 2019, 17:41
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od Awandalor » 30 čer 2019, 20:48

Verze A) vyloučena. Kond tam mám 100uF v základu, zkusil jsem ještě 330uF přidat ale bez výsledku, zapojení jsem zkoušel i s jiným napájením než USB port. Blbne to jak se servem tak s ESC a BLDC motorem který má své napájení.

Verze B) více méně potvrzena. Nastavil jsem delay na 2s servo periodicky po 2S cukne na skopu je to taky vidět. Možným řešením by mohlo být použití jiné knihovny SoftwareSerial nebo jak píšeš 2 arduina.

Verze 2 arduina - 1. arduino je připojeno k ESC (servu) a potenciometrem řídím otáčky. Informace o poloze potenciometru se přes seriovou?? linku posílá do 2. arduina na které je pověšen BT, LCD, termistor, proudový senzor, a odporový dělič - měření napětí. Pochopil jsem to dobře?

No už se s tím babrám 2. den, asi se na BT vyprdnu a pošlu to do PC kabelem. Při seriove komunikace s PC to neblbne.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od pavel1tu » 30 čer 2019, 21:17

Již loni jsem s někým řešil řízení tanku (2 motory, serva, svícení, střelba) po BT a Arduino nakonec opustil a dal tam STM32 .... měl podobné problémy. Ale již je to dlouho tak si detaily nepamatuji. Půjčil si mé STM a již mi ho nevrátil - koupil mi rovnou nové.

Arduino prostě nestíhá přepínat mezi 2 porty a ještě generovat PWM , natož několik PWM .... je to i logické, pokud si přečteš v manuálu ATmega jak to obsluhuje, vezmeš v potaz takt procesoru a co vše musí stihnout...
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od kiRRow » 01 črc 2019, 06:37

Nebo vypustit softwareserial a připojit BT modul na piny RX a TX. Pak ale za běhu nepůjde komunikovat přes USB a při programování bude asi potřeba vše z pinů RX a TX odpojit.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od kiRRow » 01 črc 2019, 08:27

A nebo použít pro ovládání serva další obvod, kterému jednou řekneš jakou má mít servo polohu a on jí bude držet jak hluchý dveře ... např https://navody.arduino-shop.cz/navody-k ... a9685.html

ripaxxx
Příspěvky: 12
Registrován: 19 říj 2020, 16:23
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od ripaxxx » 16 pro 2020, 06:08

Máte vyřešeno? Já mám podobný problém. Nejedná se o servo, ale relé. Na piny 2,3 softSerial NANO mám připojený HC-05 a na další piny asi 3 relé. Ovládání přes bluetooth mi funguje. Ale... :cry: Vidím, že když HC-05 zakomunikuje, tak mi vypnutá relé náhodně, střídavě mžikově spínají. Předpokládám tedy, že při mé logice, kdy relé je rozepnuté 5V napětím na pinu dochází k nějakému náhodnému výpadku napětí při komunikaci. Próóóč :roll: Zkusím připojit na komunikaci 0,1 pinů a uvidím.

Ming
Příspěvky: 6
Registrován: 17 čer 2020, 19:44
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od Ming » 16 pro 2020, 08:49

Někde jsem kdysi vyčetl, že knihovny softwareserial a servo "sdílejí" jedno přerušení a tudíž se pak spolu "hádají". Řešením je, jak popsáno výše, použití standardního Serial.

ripaxxx
Příspěvky: 12
Registrován: 19 říj 2020, 16:23
Reputation: 0

Re: Přenos přes HC-05 narušuje ovládání serva

Příspěvek od ripaxxx » 16 pro 2020, 11:18

Já nepoužívám servo, ale obyčejné čínské modré relé nastavené na OUTPUT pin. Tak to mě zaráží...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů