• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z zewnętrznym zasilaniem atmega328
#1
Hej, zbudowałem sobie takie samodzielne Arduino w oparciu o ATmega328p, jako mój programator służy arduino, z jego pomocą wgrałem bootloader na wyżej wymienioną atmege. I pojawił się problem gdy wgrywam za pomocą programatora(arduino as isp) program(miganie diodą) i podpinam zewnętrzne zasilanie, odpinam programator wszystko działa okej, ale gdy wgrałem sobie drugi program(sterowanie serwomechanizmem z pomocą modułu bluetooth HC-05) to jeśli jestem na zasilaniu z programatora(arduino) to program działa, natomiast jeśli odepnę i podłącze zewnętrzne zasilanie 5V to wtedy nie działa, układ jest zasilony bo zapala się dioda z funkcji setup(), ale to co dzieje się w loop() tak jakby już nie działało bo nie ma mrugnięcia diodą a więc tym samym i sam serwomechanizm nie działa. Będę wdzięczny za wszystkie pomysły które mogą pomóc rozwiązać problem. Poniżej fragment kodu. 
Kod:
#include <Servo.h>
#include <SoftwareSerial.h>

Servo s1;

int bluetoothTx = 11;
int bluetoothRx = 10;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
unsigned int servopos = 0;
unsigned int servopos1 = 0;
unsigned int servopos2 = 0;
unsigned int realservo = 0;
int zmiana = 10;
int pozycja = 0;
void setup() {
 s1.attach(9);
 bluetooth.begin(9600);
 pinMode(8, OUTPUT);
 digitalWrite(8, HIGH);
}

void loop() {
if(bluetooth.available() >= 2)
 {
   digitalWrite(8, LOW);
   delay(700);
   digitalWrite(8, HIGH);
   servopos1 = bluetooth.read();
   
   servopos2 = bluetooth.read();
   realservo = servopos1 + (servopos2*256);
   Serial.print("Realservo - odczyt: ");
   Serial.println(realservo);

    if(realservo >=0 && realservo <=180)
   {
     digitalWrite(8, LOW);
     delay(300);
     digitalWrite(8, HIGH);
     digitalWrite(8, LOW);
     delay(300);
     
     digitalWrite(8, HIGH);
     s1.write(realservo);

     Serial.print("Pozycja serwo s1 ");
     Serial.println(realservo);
     delay(200);
   }
 }
   
 
Odpowiedź
#2
Wklejony program jest niekompletny, ale pewnie ucięło przy kopiowaniu skoro go wgrywasz. Nic z pętli Ci nie wykona jeśli BT nie działa. Pokaż schemat.
 
Odpowiedź
#3
(15-05-2019, 18:02)kaczakat napisał(a): Wklejony program jest niekompletny, ale pewnie ucięło przy kopiowaniu skoro go wgrywasz. Nic z pętli Ci nie wykona jeśli BT nie działa. Pokaż schemat.

Wstawiłem schemat jako załącznik, rozważałem rozdzielenie zasilania atmegi 5V i serwomechanizmy odzielnie na 6V(docelowo 4 serwomechanizmy), ale jeszcze nie wiem jak to się do końca łączy czy masy zasilania razem czy osobno, ale na ten moment jest na jednym zasilaniu 5V całość atmega jak i serwomechanizm, na rx/tx dałem konwerter poziomów logicznych 5V/3.3V i jest też stabilizator żeby zrobić 3.3V. JP2 na schemacie to goldpiny na podpięcie serwa.
Przy zasileniu arduino(jako programator) i wyjęciu z niego 5V moduł bluetooth i serwo działa ale jak odepnę i podpinam na płytkę stykową zasilacz 5V 2A to wtedy coś nie działa telefon za pomocą bluetooth łączy się z modułem ale nie wykonuje poleceń.
 
Odpowiedź
#4
Schemat z grubsza wygląda OK (poza tym, że jest nieczytelny), kwestia jeszcze jak jest faktycznie wykonany układ, bo na schemacie masz BT podłączony do hardware Serial, a w kodzie do soft na pinach 10 i 11. Zamiast serw na początku pobaw się sterowaniem led z BT, odpadnie problem wydajności zasilania dla serw, upewnisz się że zasilanie w ogóle dochodzi do modułu BT gdy nie masz USBASP.
Moduł HC-05, taki popularny z pinami opisanymi jak u Ciebie, z regulatorem na płytce 5V-3.3V działa bez problemu na logice 5V. Jak już używasz stabilizatora 3.3V to tu też dorzuć jakieś kondensatory.
Serwomechanizmy powinny mieć osobne zasilanie, a przynajmniej rozdzielone przez diodę. Musi być wspólna masa.
 
Odpowiedź
#5
(15-05-2019, 18:45)kaczakat napisał(a): Schemat z grubsza wygląda OK (poza tym, że jest nieczytelny), kwestia jeszcze jak jest faktycznie wykonany układ, bo na schemacie masz BT podłączony do hardware Serial, a w kodzie do soft na pinach 10 i 11.  Zamiast serw na początku pobaw się sterowaniem led z BT, odpadnie problem wydajności zasilania dla serw, upewnisz się że zasilanie w ogóle dochodzi do modułu BT gdy nie masz USBASP.
Moduł HC-05, taki popularny z pinami opisanymi jak u Ciebie, z regulatorem na płytce 5V-3.3V działa bez problemu na logice 5V. Jak już używasz stabilizatora 3.3V to tu też dorzuć jakieś kondensatory.
Serwomechanizmy powinny mieć osobne zasilanie, a przynajmniej rozdzielone przez diodę. Musi być wspólna masa.

Przeniosłem układ na diody i okazało się, że zachowuje się tak samo, kiedy arduino było podpięte jako isp
Arduino | ATmega
   D10  -> RESET
   D11  -> MOSI
   D12  -> MISO
   D13  -> SCK
to zauważyłem że po odpięciu MOSI, MISO, SCK układ działał ale przy odpięciu reset zachowywał się tak jak opisywałem czyli tak jakby działało tylko to co jest w setup(), być może to jest problemem ale czym to może być spowodowane?
 
Odpowiedź
#6
Na początek używasz soft serial czy Serial sprzętowy?
 
Odpowiedź
#7
(15-05-2019, 20:07)kaczakat napisał(a): Na początek używasz soft serial czy Serial sprzętowy?

Soft serial
 
Odpowiedź
#8
No to schemat w zakresie podłączenie BT jest nieprawidłowy. Możesz jeszcze użyć sprzętowego czy masz już płytkę zrobioną? Tak byłoby pewniej w działaniu.
Co do reset, masz ten rezystor podłączony do VCC i RST? Może coś nie łączy? To stykówka czy płytka?
 
Odpowiedź
#9
(15-05-2019, 20:37)kaczakat napisał(a): No to schemat w zakresie podłączenie BT jest nieprawidłowy. Możesz jeszcze użyć sprzętowego czy masz już płytkę zrobioną? Tak byłoby pewniej w działaniu.
Co do reset, masz ten rezystor podłączony do VCC i RST? Może coś nie łączy? To stykówka czy płytka?

Stykówka, rezystor 10k jest dany pomiędzy vcc i reset. Spróbuję jeszcze użyć sprzętowych serial.
 
Odpowiedź
#10
W loop możesz dodać jeszcze millis i co 1s migać led, sprawdzisz czy loop się wykonuje, choć zdziwiłbym się gdyby nie. Pewnie nie działa komunikacja z BT, sprawdź czy jest wspólna masa.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości