Skocz do zawartości

Dobór przetwornicy step down do projektu


Pomocna odpowiedź

(edytowany)
8 minut temu, ethanak napisał:

W motocyklu raczej nie ma instalacji na prąd zmienny...

Kazda pradnica wytwarza prad zmienny...pytanie co z nim robisz pozniej...no w wskach zarowki chodza na zmienny prad, a mozliwosc dodania aku byla...

Naprawde nie wiem jak jest dzisiaj chocby w tych chinskich skuterach...bez aku wszystko chodzi (ladowanie jest osobnym kablem, osobnym swiatla) nochyba ze tak jak mowie, regulator zalatwia sprawe pradu stalego i tyle😉

8 minut temu, ethanak napisał:

nie wiem skąd Ci się te kiloherce wzięły

No majac np. 1k obrotow pola zmieniaja sie kilka razy na pradnicy wiec kilka kHz wyjdzie napewno "impulsow" pradu zmiennego😉

Tfu tfu! Podzielic przez 60!

Edytowano przez farmaceuta
Przed chwilą, ethanak napisał:

Ja jednak chyba jestem trochę zacofany... nie wiedziałem że silniki w motocyklach mają 60000 RPM 😞

60k obrotow to wyszlo mi "na wolnych obrotach"...juz poprawilem😅

Motocykl to Suzuki Bandit z 1995 roku. Posiada alternator i regulator napięcia. Muszę poczytać o tych transoptorach choć temat jest mi zupełnie nieznany. Po prostu dostałem wsad do Arduino i chciałem do niego założyć projekt.

26 minut temu, vadim1983 napisał:

Motocykl to Suzuki Bandit z 1995 roku. Posiada alternator i regulator napięcia. Muszę poczytać o tych transoptorach choć temat jest mi zupełnie nieznany. Po prostu dostałem wsad do Arduino i chciałem do niego założyć projekt.

Transoptory to taka izolacja...oddziela logike od zasilan ktore moga zagrozic tej logice (spalic ja)...podlaczenie tego to nie bedzie nic skomplikowanego...

(edytowany)


#include <Adafruit_NeoPixel.h>

#define LeftSignal A2
#define RightSignal A1
#define StopSignal A0
#define PIN 4
#define BRIGHTNESS 255
#define NUM_PIXELS  19






Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_PIXELS, PIN, NEO_GRB + NEO_KHZ800);

int LeftBlinkerState  = 0;
int RightBlinkerState = 0;
int runLightState     = 0;
int StopBlinkerState = 0;
int AMBER = strip.Color(255, 130, 0);
int OFF   = strip.Color(0, 0, 0);
int STOPE = strip.Color(255, 255, 0);
/**
 * Setup pins and do fancy start-up sequence. 
 * Red/White/Blue Larson scanner. 
 */
void setup() {
  pinMode(LeftSignal, INPUT); 
  pinMode(RightSignal, INPUT);
  pinMode(StopSignal, INPUT);   
  strip.begin();
  strip.setBrightness(BRIGHTNESS);
  strip.show();   
  knightRider(1, 20, 2, 0xFF0000);  
  knightRider(1, 20, 2, 0xFFFFFF);
  knightRider(1, 20, 2, 0x0000FF);    
}

/**
 * Main loop
 */
void loop() {
  // Read the state of the left turn-signal voltage
  LeftBlinkerState = analogRead(LeftSignal);
  float LeftVoltage = LeftBlinkerState * (5.0 / 1023.0);  

  // Read the state of the right turn-signal voltage
  RightBlinkerState = analogRead(RightSignal);
  float RightVoltage = RightBlinkerState * (5.0 / 1023.0);  

//stop
// Read the state of the left turn-signal voltage
  StopBlinkerState = analogRead(StopSignal);
  float StopVoltage = StopBlinkerState * (5.0 / 1023.0); 

  
  // If we have voltage clear the strip from 'run light state' 
  // and start Larson scan to the left. 
  if (LeftVoltage  > 3.99) {
    runLightState = 0;
    clearStrip();
    leftTurn();
    delay(10);
  }

  // If we have voltage clear the strip from 'run light state' 
  // and start Larson scan to the right. 
  if (RightVoltage  > 3.99 ) {
    runLightState = 0;
    clearStrip();
    rightTurn();
    delay(10);
  }
  //Stop
  if (StopVoltage  > 3.99 ) {
    runLightState = 0;
    clearStrip();
    StopTurn();
    delay(10);
  }

  // If there's < 3v (capasitor drain) revert to run light state. 
  if (RightVoltage < 2.0 && LeftVoltage < 2.0 && StopVoltage < 2.0) {
    runLight();
  }
  delay(20);
}

// Larson scan for right turn.
void rightTurn() {
  strip.setBrightness(BRIGHTNESS);
  for(uint16_t i = NUM_PIXELS / 2; i < NUM_PIXELS; i++) {
    strip.setPixelColor(i, AMBER);
    strip.show();
    delay(10);
  }

  delay(300);
  
  for(uint16_t i = NUM_PIXELS / 2; i < NUM_PIXELS; i++) {
    strip.setPixelColor(i, OFF);
    strip.show();
    delay(10);
  }
  delay(300);
}
//stop xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

// Larson scan for stop turn.
void StopTurn() 
{
    strip.setBrightness(BRIGHTNESS / 1);
    spread(15, 0xFF0000);
    StopBlinkerState = 1;  
    all(0xFF0000);
    strip.show();

  delay(10);

 
}

   

// Larson scan for left turn.
void leftTurn() {
  strip.setBrightness(BRIGHTNESS);
  for(int16_t i = (NUM_PIXELS-1) /2 ; i > -1; i--) {
    strip.setPixelColor(i, AMBER);
    strip.show();
    delay(10);
  }

  delay(300);

  for(int16_t i = NUM_PIXELS / 2; i > -1; i--) {
    strip.setPixelColor(i, OFF);
    strip.show();
    delay(10);
  }  
  delay(300);
}

// Helper function to make all LEDs color (c)
void all(uint32_t c) {
  for(uint16_t i=0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);  
  }
  strip.show();
}

// Dim red, run-light state.vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
void runLight()
{
  if (runLightState == 0) {
    strip.setBrightness(BRIGHTNESS / 12);
    spread(15, 0xFF0000);
    runLightState = 1;  
    all(0xFF0000);
    strip.show();
  }
}

// Function for larson scan. 
void knightRider(uint16_t cycles, uint16_t speed, uint8_t width, uint32_t color) {
  uint32_t old_val[NUM_PIXELS]; // up to 256 lights!

  for(int i = 0; i < cycles; i++){
    for (int count = 1; count < NUM_PIXELS; count++) {
      strip.setPixelColor(count, color);
      old_val[count] = color;
      for(int x = count; x>0; x--) {
        old_val[x-1] = dimColor(old_val[x-1], width);
        strip.setPixelColor(x-1, old_val[x-1]); 
      }
      strip.show();
      delay(speed);
    }
    
    for (int count = NUM_PIXELS-1; count>=0; count--) {
      strip.setPixelColor(count, color);
      old_val[count] = color;
      for(int x = count; x<=NUM_PIXELS ;x++) {
        old_val[x-1] = dimColor(old_val[x-1], width);
        strip.setPixelColor(x+1, old_val[x+1]);
      }
      strip.show();
      delay(speed);
    }

  }
}

// Set all LEDs to off/black. 
void clearStrip() {
  for( int i = 0; i<NUM_PIXELS; i++){
    strip.setPixelColor(i, 0x000000); 
    strip.show();
  }
}

// Dim a color across a width of leds. 
uint32_t dimColor(uint32_t color, uint8_t width) {
   return (((color&0xFF0000)/width)&0xFF0000) + (((color&0x00FF00)/width)&0x00FF00) + (((color&0x0000FF)/width)&0x0000FF);
}

// Function to light LEDS from the center one at a time (spreading). 
void spread(uint16_t speed, uint32_t color) {
  clearStrip();
  delay(3);
  int center = NUM_PIXELS / 2;
  for(int x = 0; x < center; x++) {
    strip.setPixelColor(center + x, color); 
    strip.setPixelColor(center + (x*-1), color); 
    strip.show();
    delay(speed);
  }    
}

 

Edytowano przez vadim1983
(edytowany)

Na transoptorach to cos takiego bedzie...mozesz uzyc pc817, tylko tu jest odwrocona logika, wiec jak wlaczysz kierunek to na wyjsciu jest stan niski (jedynie nie wiem czy taki rezystor wystarczy na diode)

 

images (2).png

Edytowano przez farmaceuta
  • Lubię! 1

Można odwrócić podłączenie transoptora (kolektor do +5v, emiter do pinu i rezystor pulldown), wtedy nic nie trzeba odwracać w programie.

BTW polecałbym PC847, tam w tym mrygadle są trzy wejścia więc po co trzy oddzielne układy jak starczy jeden.

  • Lubię! 2
1 godzinę temu, ethanak napisał:

 

BTW polecałbym PC847, tam w tym mrygadle są trzy wejścia więc po co trzy oddzielne układy jak starczy jeden.

A tego to nawet nie wiedzialem...przyda siena przyslsc👍

1 minutę temu, vadim1983 napisał:

Jak dobrze zrozumiałem transoptor od strony diody trzeba zasilić napięciem 1,2V.??

Nie. Transoptor od strony diody łączysz przez rezystor np. do wyłącznika (kierunki, stop) czy ogólnie czego tam chcesz żeby sprawdzić, czy jest tam napięcie. Tylko uważaj na biegunowość.

  • Pomogłeś! 1

Akurat podlaczenie transoptorow jest bardzo proste...tylko trzeba sie bawic przeciaganiem tych kabli etc...to jest jak na tym schemacie powyzej..jedynie nie wiem czy taki rezystor wystarczy, i sygnal dla Ardu na emiterze i rezystor tez jak @ethanak wspomnial, zeby juz nie trzeba bylo w kodzie nic poprawiac

  • Pomogłeś! 1

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