Skocz do zawartości

Własne arduino i problem z zasilaniem


xien

Pomocna odpowiedź

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, (chyba) 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 gdyby był potrzebny. Dodałem również schemat 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 czy w jakiś inny sposób(fajnie jakby ktoś się również tą wiedzą podzielił) ale na ten moment jest na jednym zasilaniu 5V całość atmega jak i 1 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.

#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;

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);
   }
 }

 

schemat.jpg

Edytowano przez xien
Dodano schemat + aktualizacja opisu
Link do komentarza
Share on other sites

Przeniosłem układ na diody żeby sprawdzić czy faktycznie zasilanie nie wyrabia 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?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Gość

A w tym twoim Arduino podciągnąłeś reset do 5V za pomocą rezystora 10K?

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.