Skocz do zawartości

Własne arduino i problem z zasilaniem


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 to post
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 to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.