Forgot troubleshoot doc

This commit is contained in:
Warky 2024-12-07 10:43:53 +02:00
parent 4c77b98388
commit 0cf5a4fa2d

View File

@ -0,0 +1,415 @@
# Troubleshooting Guide (O fok wat nou boek)
## LED Status Indicators
The device uses two LEDs for status indication:
- LED A (Pin 3): Activity indicator
- LED B (Pin 5): Error indicator
### LED Error Patterns
- 4 slow blinks: RTC initialization failure
- 4 medium blinks: RTC lost power (time reset required)
- 2 slow blinks: SD card initialization failure
- 10 quick blinks: Multiple consecutive Modbus read errors
- Continuous error blinks: Number of blinks indicates error count in current cycle
## Hardware Diagnostics
### RTC (Real-Time Clock) Module
1. Power Check:
- Measure voltage between VCC and GND pins (should be 5V ±0.2V)
- Check if backup battery is installed and voltage is above 2.5V
- Verify proper connection to SDA (Pin 20) and SCL (Pin 21)
2. Communication Test:
```cpp
if (!rtc.begin()) {
Serial.println("RTC Failed");
} else {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
}
```
3. Common RTC Issues:
- No communication: Check I2C pullup resistors
- Incorrect time: Replace backup battery
- Random resets: Check for loose connections
- Time drift: Environmental temperature too high
### SD Card Module
1. Physical Inspection:
- Verify card is properly seated
- Check pin connections:
* CS → Pin 53
* MOSI → Pin 51
* MISO → Pin 50
* SCK → Pin 52
2. Diagnostic Test:
```cpp
void testSD() {
if (!sd.begin(SD_CONFIG)) {
Serial.println("SD initialization failed!");
return;
}
// Test file creation
File testFile;
if (!testFile.open("test.txt", FILE_WRITE)) {
Serial.println("File creation failed!");
return;
}
// Test writing
if (!testFile.println("Test data")) {
Serial.println("Write failed!");
}
testFile.close();
Serial.println("SD test passed!");
}
```
3. Common SD Issues:
- Card not detected: Try reformatting to FAT32
- Write errors: Check card write-protect switch
- Random failures: Power supply issues
- Slow performance: Reduce SPI clock speed
### RS485/Modbus Communication
1. Physical Layer Test:
- Measure differential voltage between A and B lines:
* Idle state: ~0.9V to -0.9V
* Active state: ~2V to -2V
- Check termination resistors (120Ω)
- Verify ground reference
2. Communication Test:
```cpp
void testModbus() {
// Set device to receive mode
digitalWrite(DE_RE_PIN, LOW);
// Try reading first register
uint8_t result = node.readHoldingRegisters(0, 1);
if (result == node.ku8MBSuccess) {
Serial.println("Modbus communication OK");
} else {
Serial.print("Modbus error: ");
Serial.println(result);
}
}
```
3. Common Modbus Issues:
- No response: Check baud rate settings
- Intermittent communication: Check cable shielding
- Garbled data: A/B lines reversed
- Timeout errors: Increase retry count
## System-wide Issues
1. Power Supply Problems:
- Symptoms:
* Random resets
* SD card write failures
* Intermittent communication
- Solutions:
* Use separate power supply for RS485 device
* Add decoupling capacitors
* Check for ground loops
2. Environmental Issues:
- EMI interference: Shield cables
- Temperature: Keep below 50°C
- Vibration: Secure all connections
- Moisture: Use conformal coating
3. Software Lockups:
- Implement watchdog timer
- Add error recovery routines
- Monitor free memory
## Maintenance Checklist
1. Weekly:
- Check LED status patterns
- Verify log file creation
- Monitor data consistency
2. Monthly:
- Backup SD card data
- Check all connections
- Clean card contacts
- Verify RTC accuracy
3. Quarterly:
- Update firmware if needed
- Check power supply voltage
- Test communication reliability
- Clean enclosure and ventilation
## Emergency Recovery
1. If system stops logging:
- Check LED error patterns
- Review serial debug output
- Power cycle the device
- Check SD card in computer
2. Data recovery:
- Copy all files before removing card
- Use file recovery software if needed
- Check file timestamps for gaps
3. System reset:
- Hold reset button for 5 seconds
- Reformat SD card if necessary
- Reconfigure RTC if needed
## More Power-Related Issues
#### Symptoms & Diagnostics:
- Random resets
* Measure input voltage during operation (should be 9V ±0.5V)
* Check voltage stability during Modbus communication
* Monitor voltage drops during SD card writes
- SD card write failures
* Monitor 5V rail during write operations (should remain above 4.8V)
* Check for voltage sags when LED indicators activate
* Test with different power supplies to isolate issue
- Intermittent communication
* Measure RS485 supply voltage under load
* Check for ground potential differences
* Monitor voltage stability during transmission
#### Solutions:
1. Power Supply Improvements:
- Use a regulated 9V power supply rated for at least 1A
- Add local decoupling capacitors:
* 100μF electrolytic near voltage input
* 10μF tantalum at Arduino VIN
* 0.1μF ceramic at each IC power pin
- Consider using a dedicated 5V regulator for sensitive components
2. Ground Loop Prevention:
- Keep ground returns short and direct
- Create a single ground point near the Arduino
- Use star grounding topology
- Add 100Ω resistor in RS485 ground line
- Consider optical isolation for RS485
3. Noise Reduction:
- Separate digital and analog grounds
- Use shielded cables for RS485
- Add ferrite beads on power lines
- Keep high-current paths away from sensitive signals
### 2. Voltage Stability Issues
#### Common Problems:
1. Brownouts
- Symptoms:
* RTC resets
* Corrupted SD card writes
* Modbus communication errors
- Solutions:
* Add bulk capacitance (1000μF or larger)
* Use higher current power supply
* Monitor power quality with oscilloscope
2. Voltage Ripple
- Symptoms:
* Erratic behavior
* Communication errors
* Incorrect sensor readings
- Solutions:
* Add LC filter on power input
* Use linear regulator instead of switching
* Increase decoupling capacitance
3. EMI/RFI Issues
- Symptoms:
* Interference during transmission
* Data corruption
* System lockups
- Solutions:
* Shield power supply cables
* Add common-mode chokes
* Use metal enclosure as shield
* Add TVS diodes for protection
[Previous sections remain the same until Component-Specific Power Solutions]
### 3. Component-Specific Power Solutions
#### 3.1 SD Card Module Power Management
1. Voltage Requirements:
- Operating voltage: 3.3V ±0.3V
- Maximum current draw: ~100mA during writes
- Peak current during initialization: ~200mA
2. Recommended Power Configuration:
- Primary Solution:
* Use AMS1117-3.3V dedicated regulator
* Input capacitor: 10μF tantalum
* Output capacitor: 22μF tantalum
* Bulk capacitor: 100μF electrolytic
* Bypass capacitor: 0.1μF ceramic
3. Implementation Details:
```cpp
// Code to detect power-related SD issues
bool checkSDPower() {
if (!sd.begin(SD_CONFIG)) {
// Try power cycling SD card if available
digitalWrite(SD_POWER_PIN, LOW);
delay(100);
digitalWrite(SD_POWER_PIN, HIGH);
delay(100);
return sd.begin(SD_CONFIG);
}
return true;
}
```
4. PCB Layout Recommendations:
- Keep power traces minimum 20mil width
- Use ground plane under SD module
- Place decoupling caps within 10mm
- Separate digital and analog grounds
#### 3.2 RS485 Interface Power Solutions
1. Power Requirements:
- Operating voltage: 5V ±0.25V
- Typical current: 50mA
- Maximum current: 250mA during transmission
2. Isolation Solutions:
- Recommended Components:
* ISO7721 digital isolator
* B0505S-1W isolated DC-DC converter
* 120Ω termination resistors (0.25W)
* TVS diodes: SMBJ6.5CA
3. Protection Circuit:
```
VCC (5V) ----[10Ω]----+----[0.1μF]----GND
|
[TVS Diode]
|
RS485_A ----[100Ω]---+----[MAX485]
```
4. Noise Mitigation:
- Add common-mode choke (100μH)
- Use split ground plane
- Implement cable shield grounding
- Add bi-directional TVS protection
#### 3.3 RTC Module Power Management
1. Primary Power:
- Operating voltage: 5V ±0.5V
- Current consumption: ~1.5mA
- Backup current: ~3μA
2. Backup Power Solutions:
- Primary Option: CR2032 Battery
* Expected life: 3-5 years
* Monitor voltage threshold: 2.5V
* Add schottky diode for protection
- Alternative: Super Capacitor
* Recommended: 1F, 5.5V
* Charge resistor: 1kΩ
* Backup duration: ~1 week
3. Power Monitoring:
```cpp
bool checkRTCPower() {
float backupVoltage = analogRead(RTC_BATT_PIN) * (5.0 / 1023.0);
if (backupVoltage < 2.5) {
Serial.println("RTC backup voltage low!");
return false;
}
return true;
}
```
4. Temperature Compensation:
- Add temperature sensor (DS18B20)
- Monitor correlation with time drift
- Implement software correction
#### 3.4 Arduino MEGA Power Requirements
1. Voltage Inputs:
- VIN (recommended): 7-12V
- 5V USB: 5V ±0.25V
- Maximum current: 500mA
- Peak current: 800mA
2. Power Distribution:
- Main regulator bypassing:
* 47μF electrolytic on VIN
* 0.1μF ceramic on 5V
* 10μF tantalum on 3.3V
4. Power Debugging:
- Monitor VIN with voltage divider
- Check 5V rail stability
- Measure ground bounce
- Track current consumption
#### 3.5 Power Integration Guidelines
1. System Power Budget:
```
Component Typical Peak
--------------------------------------
Arduino MEGA 100mA 200mA
SD Card 50mA 200mA
RS485 50mA 250mA
RTC 2mA 3mA
LEDs 20mA 40mA
--------------------------------------
Total: 222mA 693mA
```
2. Power Supply Selection:
- Minimum rating: 12V @ 1A
- Recommended: 12V @ 2A
- Consider linear vs switching
- Add 50% safety margin
3. Decoupling Network:
```
Location Capacitor
--------------------------------------
Input Power 1000μF electrolytic
VIN 47μF electrolytic
5V Rail 10μF tantalum
3.3V Rail 22μF tantalum
Each IC 0.1μF ceramic
```
4. Ground Management:
- Implement star grounding
- Separate analog/digital
- Use ground plane
- Monitor ground differential