Здравствуйте.
Похожая проблема.
Спаял схему усилителя на кт816А для управления оборотами движка.
Все предельно просто:
Скетч
const int ledPin = 6;
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
void loop() {
  byte brightness;
  if (Serial.available()) {
    // read the most recent byte (which will be from 0 to 255):
    brightness = Serial.read();
    // set the brightness of the LED:
    analogWrite(ledPin, brightness);
  }
}
Программа на Delphi посылает байт данных (0..255) на com4, который преобразуется в сигнал на пин6.
Работает всё как часы - водишь скролбаром на форме от 0 до 255 моторчик то останавливается, то раскручивается в полную мощь. Ток пина6 не превышает 12 мА (хотя со светодиодом и на 30 работает нормально).
Но стоит несколько раз поиграться со скролбаром как связь по com4 прекращается. Перезапуск программы (и соответственно, переоткрытие порта) ничего не даёт. В то же время, сам микроконтроллер (Arduino Deicimila) функционирует нормально (ток держится на том уровне, на котром был установлен последней командой com4.
Вопрос - микроконтроллер виноват или что-то заземлить забыл????
И ещё - при включении блока питания com-порт также "отваливается".