Blackmore,
Há muitos aspectos envolvidos num controle PID em malha fechada, o mais básico, é o tempo de varredura do software, que deve ser compatível com o processo que voce vai controlar.
Também há vários tipos de algoritmos: posicional, incremental, série, paralelo, etc... Há ainda as variações do PID, tais como: somente P, P+I, P+I+D. PID gap, PID ratio, PID com ganho adaptativo, ...
Existem ainda as questões relativas à sintonia do controlador PID.
Como voce deve saber, apesar de ser usado em larga escala, o PID é basicamente um algoritmo para processos lineares, ou que sejam lineares dentro de uma pequena faixa...
Um algoritmo PID simples:
previous_error = 0
integral = 0
output = 0
start:
error = setpoint - actual_position
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative + output
previous_error = error
wait(dt)
goto start
Esse algoritmo poderia ser passado para o assembler de um PIC.
O PID acima é básico, mas um PID pode conter mais coisas, tais como: o modo MANUAL, o Anti RESET windup, o Bumpless, .... Depende se vai ter interface com usuário, a robustez necessária...
Mas pra começar, que tal definir uma aplicação exemplo, fica mais didático...