[Scilab] Optimisations basiques

Quelques optimisations basique à utiliser dans Scilab (utilisées dans le cadre d’un récepteur GPS en soft).

Le premier point est de supprimer les boucles:
- Optimisation des multiplications entre éléments de deux matrices (attention pas la multiplication des matrices):

for k = 1:SIZE
     tmp_carrier(k) = prn_bpsk(k) * gps_data(k);
end
tmp_carrier = prn_bpsk .* gps_data;

- Recherche et remplacement de valeur dans une matrice:

//Replace 0 by -1
 prn(prn == 0) = -1;

Dans tous les cas privilégiez l’utilisation des fonctions intégrées tel que max() , find() et les opérations/opérateurs vectoriels. Je n’ai pas fait de mesures précises mais la recherche de PRN prends une dizaines de secondes avec ses optimisations au lieu de plusieurs MINUTES avec des boucles imbriquées.

[Misc] Réparation HUB USB

Pour une raison que je ne m’explique pas mon petit HUB USB 7 ports est mort (dans la soirée s’il vous plait, ce qui explique ma tentative de réparation).  Si vous avez un HUB USB de plus de 4 ports il y a fort à parier que ce soit deux chip séparés (4 ports chacun).

Si le hub n’est plus détecté il y a fort a parier que ce soit le chip coté master qui soit mort. Mais il y a fort à parier aussi que les deux chip soit identiques :) Donc il y a toujours moyen de garder au moins 3 ports fonctionnels.

defect_gl850g swap

Un petit coup de soufflette, un petit swap des chip et ça roule, j’ai trois ports fonctionnels. Vous remarquerez au passage à quel point la carte et les soudures sont dégueulasses.

[CNC Microscope] Erreurs version 0.1 – PCB

Le PCB contient de la version 0.1 contient une erreur particulièrement gênante, les ouvertures du Soldermask sont trop grande conduisant à un grand nombre de court-circuits (montage à la main obligatoire).

Soldermask Failure

Comme visible sur la photo et sur la comparaison de Gerber le problème ne se pose pas sur le package QFN (ni sur les PowerPAD) car j’ai définit un override des contraintes générales.

GERBER Soldermask Failure

Le problème vient des options générales du projet que j’ai oublié de redéfinir avant de générer les GERBER et de ne PAS les vérifier. Comme règle de base prenez soin de mettre une dimension d’isolation inférieur ou égale à celle appliqué entre les plans de cuivre (dans ce cas il aurait fallu 152.4µm).

Kicad Soldermask Options

Au final, en faisant attention lors de l’assemblage la carte est fonctionnelle, elle pilote sans problèmes les deux moteurs de ma table de CNC, il ne reste plus qu’à faire un soft complet avec la communication et des timing propres. La deuxième version est en cours de dev en parallèle.

 

[CNC Microscope] Erreurs version 0.1 – Schematique

Petit récapitulatif des erreurs de la version 0.1.

Erreurs Schéma

Quelques erreurs se sont nichées sur le schéma, autant le dire tout de suite la solution est relativement simple, arrêter d’être fainéant et utiliser le check DRC à chaque fois.

- Les signaux "Fault" des 3 DRV8825 ne sont pas connectés (pas obligatoire mais quand même bien pratique pour comprendre pourquoi les moteurs s’arrêtent d’un coup sans raison apparente).

Unconnected fault pin

- Dans l’état actuel la carte fonctionne mais impossible de la faire tourner à partir du Quartz externe, lors de la tentative d’initialisation il n’y a pas d’oscillations. Je ne sais pas encore si cela viens des capas de pied ou si j’ai tout simplement un problème d’overdrive (ou peut-être un problème lié au soldermask défectueux). Quoi qu’il en soit la prochaine version intégrera une place pour une résistance tel que définit dans l’AN2867.

HSEStartUpStatus = RCC_WaitForHSEStartUp(); // Wait Xtal to start
// HSEStartUpStatus = Error à chaque fois
// Les pin de l'oscillateur présentes une tension continue une fois
// le block activé

Rext oscillator

- Modifications prévues: En plus de la correction des erreurs présentées ci-dessus, je vais réorganiser les PIN pour optimiser le routage, surtout après la suppression du troisième driver qui en l’état m’est inutile. Il sera remplacé par différente composants pour de la localisation dans l’espace. Dans l’absolu la diode de "Boost" présente sur le DC/DC peut-être retirée.

[CNC Microscope] Description de la table

La table vient de eBay, c’est une Nutec custom modele "6435". NuTec demande 125$ pour avoir la datasheet en PDF, mais la partie électrique est apparente. Les deux moteurs pas à pas sont des Lin-Engineering "417-15-03". N’ayant aucunes indications quand à la distance de déplacement de la table et à sa précision tout cela sera déterminé par le microscope avec un règle µm.

Nutec Driving ScrewLe principale défaut de cette table est de ne pas avoir de capteur de course, uniquement des capteurs d’arrêt sous forme de fourche optique. Il faudra donc prévoir une partie software pour étalonner la table.

Les fourches optiques sont des PM24 de chez Sunx.

[Kicad] Component Schematic Generator

Following the little script for Kicad footprint I did one to speed up the schematic design of component. It basically generate a schematic file from a CSV source and place pin on good pages.

Here is the script

The CSV format is:

Package Name Package Name Page NAME TYPE

For example:
LFBGA144;LFBGA144_PAGE;LQFP144;LQFP144_PAGE;NAME;TYPE
A3;6;1;;PE2;I/O