CH32V003 J4M6 (MounRiver J4M)

ESP32, CH32V003, RP2040
Antworten
Benutzeravatar
asp
Site Admin
Beiträge: 165
Registriert: 22 Feb 2025, 19:44
Wohnort: Lohn-Ammannsegg
Kontaktdaten:

CH32V003 J4M6 (MounRiver J4M)

Beitrag von asp »

verfügen über keinen externen Quarzoszillator. Vin muss mit 5V versorgt werden. Das Board hat zudem einen eigenen 3,3V LDO-Regler und zwei LEDs.
- eine Rote als Betriebsanzeige
- die blaue Status-LED ist verbunden mit PA2

Sehr wichtig, sowohl in MounRiver als auch in Arduino: 48MHI (intern)
CH32V003J4M6.jpg
CH32V003J4M6.jpg (66.66 KiB) 182 mal betrachtet
CH32V003J4M6-v-unten.jpg
CH32V003J4M6-v-unten.jpg (35.74 KiB) 178 mal betrachtet

Code: Alles auswählen

von oben

        GND  DIO  VCC
 -------------------------
 |        o   o   o      |
 |                       |
PC1                     VIN
PC2                     PA2
PC4                     GND
PD4                     PD6
 |                       |
 -------------------------

mit WCH-Link Flaschen
WCH-Link-3.jpg
WCH-Link-3.jpg (39.39 KiB) 180 mal betrachtet
MC-CH32V003J4M6.jpg
MC-CH32V003J4M6.jpg (40.81 KiB) 179 mal betrachtet

Es müssen folgende Pins verbunden werden

Code: Alles auswählen

 WCH-Link      CH32V003J4M6
 GND --------- GND
 3V3 --------- VIN
 SWDIO ------- DIO
CH32V003J4M6-blink.jpg
CH32V003J4M6-blink.jpg (21.76 KiB) 129 mal betrachtet

Code: Alles auswählen

/*
// ============================================================
CH32V003J4M6: 


       GND  DIO  VCC
 -------------------------
 |       o   o   o       |
 |                       |
PC1                     VIN
PC2                     PA2
PC4                     GND
PD4                     PD6
 |                       |
 -------------------------
 
*/

#define LED_PIN    PA2

void setup() {
  
    delay(1000);
    
    pinMode(LED_PIN, OUTPUT);
    
}

void loop() {
    digitalWrite(LED_PIN, HIGH);
    delay(500);
    digitalWrite(LED_PIN, LOW);
    delay(500);
}

Habe lange gebraucht bis ich den LED-Pin gefunden habe: ist PA2
Benutzeravatar
asp
Site Admin
Beiträge: 165
Registriert: 22 Feb 2025, 19:44
Wohnort: Lohn-Ammannsegg
Kontaktdaten:

Arduino ADC programmieren

Beitrag von asp »

datei -> ~/.arduino15/packages/WCH/hardware/ch32v/1.0.4/variants/CH32V00x/CH32V003F4/PeripheralPins.c
PC4 nach PD4 ändern

Code: Alles auswählen

//*** ADC ***
#ifdef ADC_MODULE_ENABLED
WEAK const PinMap PinMap_ADC[] = {
  {PA_2,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 0)}, // ADC1_IN0
  {PA_1,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 1)}, // ADC1_IN1
  {PC_4,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 2)}, // ADC1_IN2
  {PD_2,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 3)}, // ADC1_IN3
  {PD_3,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 4)}, // ADC1_IN4
  {PD_5,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 5)}, // ADC1_IN5
  {PA_6,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 6)}, // ADC1_IN6
  {PD_4,      ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 7)}, // ADC1_IN7
  {NC,        NP,   0, 0, 0}
};
#endif
Benutzeravatar
asp
Site Admin
Beiträge: 165
Registriert: 22 Feb 2025, 19:44
Wohnort: Lohn-Ammannsegg
Kontaktdaten:

Beispiel Solartracker

Beitrag von asp »

Nur zum Testen
solartracker.jpg
solartracker.jpg (56.67 KiB) 80 mal betrachtet
  • das Panel liefert die Energie über einen Schleifring, damit die Positionierung immer nur in eine Richtung erfolgt
  • am Morgen wenn der MC merkt dass das Panel etwas Leistung bring, dreht das Panel mal 360 Grad um die Position mit der maximalen Sonneneinstralung zu finden
  • danach dreht der MC das Panel so lange weiter bis 90% von dem gemessenen Maximum erreicht wird
  • in dieser Startposition bleibt der Tracker nun mal stehen und dreht alle 12 Minuten 3 Grad weiter
  • 3 Grad alle 12 Minuten ist etwas zu viel, aus diesem Grund wird nicht weitergedreht wenn die neue Spannung tiefer war als die Vorletzte
  • wenn am Abend die Leistung abnimmt wird der Regler komplett vom Panel und Batterie getrennt und am Morgen beginnt wieder alles von Neuem
Antworten