Accueil

News
Vos News !
Archives

Articles
Guides
Tests
Watercooling
Mods
Divers

Galeries
PCs
Bureaux

Revue de presse
A propos

Contact
Forum
Prix
Liens



admin


Afficheur à persistence rétinienne

fait par Trident le 05 Décembre 2005


Tutoriel pour un afficheur à persistance rétinienne !

J'ai longtemps rêvé sur les afficheur LCD que je voyais sur le forums de JPC, en fait, j'en ai tellement vu que j'ai commencé à trouver ça trop classique, puis des afficheurs on commence à en voir vraiment partout, surtout depuis que les hypermarchés les utilisent pour marquer les prix.

L'origine de l'idée
Je ne sais plus si c'est moi qui l'ai chercher ou si c'est elle qui m'a trouver, mais c'est
cette page qui est à l'origine de tout. Cependant, sur cet exemple, l'afficheur tournant, il me semblait presque impossible d'envoyer des données du PC au micro-contrôleur, et n'afficher que l'heure deviendrait vite lassant. J'ai donc commencé à chercher une solution, il en existe de nombreuse sur le web avec un afficheur tournant et avec transfert à travers un système de contact en charbon, à travers roulement à bille ou même infra rouge, mais ils me semblaient tous trop dur à mettre en oeuvre. Je me suis alors tourné vers les afficheurs oscillants, j'en avait vus quelqu'un sur des catalogues nature & découverte ou autre, très vite je suis tombé là dessus :

J'avais bon espoir de trouver quelque chose de semblable et home-made, mais je n'ai rien trouver d'autre qu'une référence sur quelqu'un qui rencontré trop de problèmes au niveau mécanique, ou alors un rapport expliquant les principes mais apparemment le projet n'aboutit jamais. Il fallait donc que je me débrouille tout seul, étant loin de mon 'atelier' je n'avais que mon esprit pour imaginer le travail que j'avais à accomplir.
Ainsi durant quatre mois, je me suis petit à petit convaincu que c'était faisable, et enfin sont arrivé les vacances de pâques ou j'allais pouvoir avoir tout le nécessaire sous la main pour concrétiser mon rêve.


Le principe
Pour pouvoir afficher un texte de 32 caractères avec une font de 7x5 points, on se dit qu'il faut 32*5=160 colonnes et 7 lignes pour un total de 1120 points, ce qui n'est pas rien.
L'idée est alors d'utiliser seulement 7 points lumineux et de les déplacer pour qu'ils parcourent l'ensemble des 160 colonnes de l'afficheur. En allumant les 7 points correctement, c'est à dire tels que doit être affiché la colonnes la ou ils sont, et en les déplaçant suffisamment vite, la persistance rétinienne permet de voir le texte. De plus, la tige supportant les 7 points lumineux n'étant pas brillante, son mouvement rapide la rend presque invisible, on alors l'impression que le texte vole dans l'air.

La persistance rétinienne
La persistance rétinienne, et un phénomène de persistance de vision dont l'origine est ... la rétine.
En effet, la lumière en frappant la rétine 'bouscule' des molécules qui changent d'état et émettent un léger courant électrique, ce courant est transmis au cerveau qui traite l'information, mais la molécule est alors 'aveugle' à tout nouveaux changement de lumière, il lui faut d'abord retourner a son état d'origine, ce qui prend du temps (de l'ordre du dixième de seconde), pendant ce laps de temps, votre cerveau ne vas pas vous dire 'il fait noir', mais va continuer à vous montrer la dernière information reçue.
Pendant ce temps, on en profite pour afficher toute les autres colonnes du texte, ou comme au cinéma, pour changer l'image sur l'écran. C'est ainsi qu'en allant au cinéma, vous passez la moitié du temps à regarder un écran noir, et quand vous regarderez votre afficheur a persistance rétinienne, vous passerez 319/320ième du temps a regarder le vide.

C'est parti
Après plusieurs essais brillant mais bruyant, c'est la mécanique a base de tête de disque dur qui c'est imposé.
Pour ce qui n'ont jamais entendu parler de l'intérieur d'un disque dur, le principe et le même que pour les vinyles, il y a un disque qui tourne (il est en métal dur), une tête qui se déplace, et ainsi la tête couvre toute la surface du disque pour y déposer ou y lire une information, seulement dans le disque dur la tête est libre d'aller du centre vers le bord du disque car il n'y a pas de sillon.
On va tout d'abord préparer la tête de lecture pour y ensuite y attacher une tige au bout de laquelle il y aura les '7 points lumineux', à savoir 7 diodes.
On commence donc par trouver un vieux disque dur que l'on aura aucun regret a charcuter (disque dur HS, de trop petite taille, ou ayant fait 8 crash de suite vous forcent à recharger le site d'alizé autant de fois), la première chose à faire est d'enlever, grâce à un tournevis, l'électronique et le capot. Faite attention au vis cachée (jeux de mots ?) sous les autocollant, elles sont très fourbes.
Enlever le capot n'est pas évident car il y a un joint en silicone qui le retient, il vous faut alors le décoller petit à petit avec un vieux couteau. Essayer de ne pas trop le tordre, car il pourra servir de cache une fois la mécanique finie.
En enlevant l'électronique, il est fort probable que des petits bouts de mousse tombent, ils étaient caché dans une fente et servaient de contact entre l'électronique principale et la petite électronique coté capot, on en reparlera plus bas.
Sur d'ancien modèle, ce contact se faisait par une bande plastique, il est assai facile de la déconnecté de l'électronique en 'ouvrant' la prise plastique sur laquelle elle est branché ou en tirant un peu dessus.
Normalement vous avez ça sous la main :

Ici, je vous conseille d'enlever le ou les disque(s) métallique, en effet en essayant de les scier, ils font un bruit abominable... vous étiez prévenus ;o)
On va en effet scier le disque dur en deux pour séparer la tête (en bas), des disques (en haut), la tête donnera alors sur le vide ce qui nous permettra d'y fixer la tige.
Deux choses, en sciant, faite attention à ne pas couper la tête, et essayez de garder les pas de vis sur la face électronique, ils servirons à fixer l'électronique de contrôle.

Normalement, la tête de lecture bouge quand vous la sollicitez (ce qui veut dire qu'elle bouge quand vous la faite bouger...), mais vous remarquerez qu'il y a un coté ou elle reste comme 'collée', c'est dû à la présence d'un aimant de maintient ; il doit être la je présume pour éviter que la tête se ballade pendant le transport du disque dur. Vous l'auriez compris, il faut l'enlever, la aussi un coup de tournevis devrait suffire. Sur mon disque, il se trouvait ici (en rouge):

Profitez en pour faire des encoches dans la masse d'aluminium de part et d'autre de la tête de lecture, elles serviront à fixer les 2 ressorts (en bleu, faites les les plus longue possible, jusqu'à la masse d'aluminium.)

L'étape suivante, c'est le câblage de la tête de lecture, ce n'est pas très facile, mais on y arrive ;o)
Un multi-mètre pourra vous servir. Pour bouger, la tête de lecture utilise une grosse bobine de fil qui est enfermé entre 2 aimants (en bas à droite en rouge sur la dernière image), cette bobine est alimentée par deux piste de la bande en plastique qui arrive jusqu'à la tête.
Tout d'abord mesurez la résistance aux deux points où la bobine est soudée à la bande en plastique :

En bas la bobine, en haut la bande en plastique.(merci à andreq pour la photo).
Je vous déconseillerais de vous brancher ici pour alimenter la bobine, car c'est une partie mobile, les soudures ne tiendrais pas.
Suivez ensuite les deux piste pour essayer de trouver là ou elles aboutissent.
Soit vous avez de la chance et vous le voyez de suite, il ne vous reste alors qu'à isolé les pistes en enlevant les composants et a souder à la place les deux fils qui alimenteront la tête de lecture.
Soit vous perdez les pistes, c'est ce qui m'est arrivé. En fait, on les retrouve sur la face 'électronique' du disque, une fente dans la masse d'aluminium sert de lieu de passage (la ou il y avait les petits bouts de mousse), c'est ici qu'il vous faudra jouer du testeur pour retrouver les contacts.
Si vous pensez avoir trouver vos deux points de branchement, comme ils sont reliés à la bobine, le courant dois normalement passer, faite alors attention en testant a ne pas toucher la masse d'aluminium, la mesure de la résistance doit plus ou moins être la même que celle faite là ou la bobine est soudé à la bande en plastique.
Il ne vous reste plus qu'a souder à travers la fente :

Pour être sur de vous, prenez une pile 1.5v, et titillez un peu la bobine en la branchant dessus, la tête devrait avoir des mouvements relativement violents, donc évitez de laisser chauffer ;o)

On va laisser un peu de coté notre moitié de disque dur pour s'intéresser aux diodes et à la tige.
Pour les diodes le mieux c'est d'en trouver CMS (composants miniatures de surface), mais des diodes classiques de 3mm peuvent faire l'affaire, par contre 5mm ça commence à faire gros lourd et donc lent.
Je vous le rappel, il nous faut 7 diodes, je vous laisse le choix de la couleur ;o).
C'est ici une étape difficile au niveau de la patience si vous n'êtes pas un dieu de la soudure, j'y ai passé une après midi entière pour les diodes CMS, et bien 2h pour les diodes classiques, et je n'en avais fixé que 5 !
Si vous décidez d'utiliser des diodes classiques, je pense que le plus pratique sera alors de faire la tige en fils électrique dénudé, de 2.5mm de diamètre et d'un longueur d'environ 35cm (dont 5 en prévision de la fixation), vous souderez alors la masse des diodes (coté ou le boîtier est plat) sur une extrémité du fil en les mettant autant que possible bien en ligne et bien les une contre les autres. L'utilisation de super glu pour les faire tenir entre elles me semble raisonnable (évitez toute fois de trop en mettre au risque de percer le boîtier des diodes) vous devriez obtenir quelque chose comme ça :


Vous remarquerez les fils très fin soudé sur les anodes (+), ils représentent eux aussi un challenge, en effet ce fil vient d'une bobine d'electro-aimant :

Vous en trouverais sûrement dans le bobinage d'un haut-parleur, mais je ne sais pas si la quantité sera suffisante :o(
(pour ceux qui ne trouverais pas ce genre de fil, un fil fin pourra faire l'affaire, mais ne le dénudé pas complètement bien sur, et éviter de trop l'enrouler autour de la tige sans quoi le poids serait trop important.)
Le fil est isolé par une couche très fine de verni, pour pourvoir le souder, il faut l'enlever. Je ne connais pas la façon officielle, mais passer rapidement (juste pour noircir) l'extrémité du fil dans une flamme de briquet puis trempé cette extrémité dans une bille d'étain maintenu en fusion avec le fer à souder à marché pour moi. (si quelqu'un à un autre truc, merci de me le donner ;o))

Vous souderez alors l'extrémité dénudé à l'anode d'une diode, vous déroulerez 50 alors bon centimètre de fil, puis vous recommencerez pour les 6 autres diodes.
Ensuite, vous pouvez enrouler les fils tous ensemble autour de la tige, arrêtez vous à peut prés à mi-longueur, les fils étant isolés, ce n'est absolument pas grave si ils se touchent.
Soudez aussi un fil sur la tige, à 25cm des diodes, en laissant 10 cm dont 5 pour la fixation ; c'est la masse.
Par contre, si vous avez des CMS, la tige sera alors composé d'une baquette en bois de brochette (léger et résistant, le bois est votre ami), il vous faudra trouver un petit bout de PCB (plaque d'électronique) ayant a peut prés ce genre de circuit :

Avec à gauche la masse, et à droite les 7 anodes. L'écart entre la masse et les anodes étant plus ou moins la taille des diodes CMS, et la distance entre deus anodes la plus petite possible tout en permettant de fixé les diodes CMS.
Pour le découpper, la scie à métaux devrait marché, moi j'ai utiliser une perceuse verticale pour faire des trous tout autour.
J'ai récupéré le mien sur un circuit de télécommande universelle, au niveau d'une puce CMS, les connections de la puce m'ont servi pour les 7 anodes, pour la cathode j'ai utilisé un bout de piste qu'il a fallut isoler de certaine anodes. Vous pouvez charcuter ce petit bout de PCB à souhait, tous ce qu'il faut c'est que pour chaque diodes, il y est au moins un point de soudure solide (normal !).
Je ne suis pas non plus un spécialiste de la soudure CMS, personnellement je procédé ainsi, je met une goutte d'étain sur les deux points de fixations, je pose la diode en la tenant avec une pince à épiler sur sa position finale, je fait refondre une goutte d'éteint, et c'est fixé. Il ne reste plus qu'a faire de même de l'autre coté.
L'orientation des diodes CMS est visible sur le boîtier, il y a le dessin habituel qui permet de les orienter (la pointe du triangle est la masse).
Il reste alors a souder le fil fin récupéré sur un électro-aimant, 50cm pour chaque anode, et 50cm pour la masse.
Ensuite enroulez les autour de la tige arrétez à la moitié de la tige.

L'étape suivante est la fixation de la tige à la tête de lecture. Ce n'est pas facile car la tête étant en aluminium brosser, rien ne peut y être soudé ou coller (la super glu tient très mal). Je n'ai pas essayer les mastique genre ni clou ni vis, mais si vous connaissez bien ce genre de produit et que vous pensez que ça peut avoir de bon résultats, n'hésitez pas !

La tête se composait sur mon disque de 4 nivaux, laissant la place pour 3 disques, je pense qu'il y en a nécessairement au moins 2.
Écarté donc les lames en deux groupes de même taille, puis placez la base de votre tige entre.
Ici ce fait le premier réglage, l'angle entre la tête de lecture et la tige.
Pour être symétrique, l'engin posé debout à plat, placez la tige pour qu'il y est, à son sommet, autant de battement à gauche qu'a droite lorsque la tête de lecture vas de butté en butté.

Pour la tige en bois :
Le bout de la tête avait chez moi un trou, (en fait 4, un par nivaux), faites y passer un bout de 5 cm de fil électrique de 2.5mm et dénudé, pincé la tige en serrant à l'aide d'une pince les 4 niveaux de la tête, fixé le tout en torsadent de 3-4 tours le fil. Ensuite entouré la tige avec le fil restant, et en le torsadent de nouveau pour qu'il la tienne un peu.
Un point de soudure sur chaque torsade et c'est fixé.

Ici avant d'avoir mis le fil qui tien la tête serré :


Après.

Si votre tige est un fil électrique, pincez d'abord un peu la tige comme dit plus haut.
Avec les 5 centimètres de tige en réserve faite un ou deux tour autour de la moitié haute de la tête de lecture en serrant fort, puis finissez par un tour ou deux autour de la base de la tige et finissez de pincer. (il ne faut pas pincer d'un coup car vous ne pourriez plus entouré le fil sur la moitié haute de la tête, n'y pincé à la fin car le fil ne serait plus serré.
Finissez par quelque points de soudure. Cette fixation est la plus dure, si vous trouvez mieux dites le moi.

Vous pouvez maintenant finir d'enrouler les fils d'alimentation des diodes, regroupez les prés de l'axe de la tête, et fixé les ici avec une goutte de cire à bougie, en laissant suffisamment de mou pour qu'ils n'entravent pas le mouvement de la tête et qu'ils ne s'usent pas trop vite.
Si vous êtes un dieu de la soudure, vous pouvez essayé de souder les fils sur la bande plastique, en effet il reste sur celle-ci les pistes qui alimente les têtes de lecture/écriture proprement dites, il faudra aussi souder en bout de piste, au niveau du CMS qui contrôle les tètes (n'oubliez pas d'enlever les CMS). De plus la masse étant commune à la bobine d'entraînement, ça ne fait que 7 fils à souder :o)
Pour connecter les fils fins à l'éléctronique, je vous conseille de souder l'autre extrémitée à un bout de fil plus dur, c'est aussi plus pratique à manipulé.
Finallement, j'ai fait passer l'ensemble des fils à travers un trou laissé par une vis pour les retrouver de l'autre coté, la ou il y'a l'électonique (au centre de l'image suivante).

Vient le dur moment des ressorts, il en faut deux, j'ai trouvé les miens dans un vieux lecteur cassette, de bon ressorts de plusieurs centimètres, si vous n'en trouvé pas, essayé peut-être des ressorts de stylo billes mis bout à bout et allongé de ficelle si nécessaire.
Fixez les sur les encoches que vous aviez taillé exprès dans la masse d'aluminium et à la base de la tige, ou sur le bout de la tête de lecture, l'objectif et qu'ils tiennent fermement la tige verticalement en tirant chacun de son coté. Une fois fixé, il faut que la tête puisse aller de butée en butée (lors de ces tests, appuyer sur la tête, pas sur la tige) et lorsqu'on la lâche, il faut qu'il y est une oscillation rapide et autant que possible silencieuse. Chez moi l'oscillation dure environ 5 secondes.
Pour accélérer l'oscillation, il faut augmenter la tension sur les ressorts.
Le plus dur et d'avoir un ressort qui reste accrocher lorsqu'il est compressé, mais en tâtonnant, on y arrive :

Ne fixez pas définitivement les ressorts, des réglages seront probablement à faire. Ça commence à prendre forme non ?
Un des plus gros problèmes avec cet engin, c'est les vibrations, il faut donc un support adapté pour éviter que ça fasse tout vibrer.
J'ai découpé le mien dans une vieille tour AT pour y utiliser la fixation d'un lecteur disquette, et j'y ai accroché à l'aide d'une ficelle une demi brique réfractaire (enroulé dans du papier aluminium).

Finalement la brique ne sert plus, mais pendant la phase de test, il peut être utile d'avoir un support qui pèse son poids.

L'électronique
La version finale, devrait normalement être autonome, le PC enverra juste le texte à afficher et un micro contrôleur PIC16f84 ferra le reste.
En attendant que le programme du PIC fonctionne, je vais vous expliquer comment brancher votre système sur le port parallèle pour le commander depuis le PC.
Le port parallèle compte 8 sortie, pour câbler votre circuit, il vous faut donc une prise DB25 mâle, normalement les numéros sont lisible dessus, voici le shema de principe pour cabler les LEDs :

Les LEDs sont numérotées de la plus haute à la plus basse, vous retrouverez chaque anode et la masse à l'aide d'un testeur.
Les résistances sont des 330ohm, mais il faut les adapter au type de LEDs et au voltage de l'alimentation (5 volts).
Enfin, le 74LS541 est la pour amplifier le signal, en effet le port parallèle n'est pas censé pouvoir alimenter directement quoique ce soit.
M1 et M2, on les retrouve sur le circuit du moteur :

Déjà, vous aurez remarqué que la bobine n'est pas orientée, lors des premiers essais, vous verrez assez vite si vous l'avez branché correctement, en effet, si on la branche à l'envers, le texte est à l'envers !
C1 fait 220µF, A+ et A- représente le circuit d'alimentation externe, chez moi, un transfo 4.5v pour lecteur CD, avec un condo de 1000µF + sur +, - sur -  pour stabiliser l'alimentation qui servira aussi au PIC.
Le transistor est un transistor NPN classique si j'ose dire (en fait récupéré sur le circuit du lecteur cassette sur lequel j'ai pris les ressorts).

Vous trouverez sur le web de nombreux schéma d'alimentation stabilisé, mais une mauvaise expérience avec un '7805' et un PIC grillé m'en a découragé, à titre d'information, voilà un exemple d'alimentation stabilisé :

Comme vous pouvez le remarquer, il vous faut alors un transfo 12v....
Pour faire tout ces montage, j'ai utilisé une plaquette de test, mais n'importe quel PCB vidé de ses composants peut faire l'affaire, il y a suffisamment peu de composant pour réussir à utiliser les pistes existantes.

Enfin !!!!
Bien, vous avez monté votre afficheur, vous l'avez câblé, reste à le faire marcher, je vous propose pour ça un programme simplifié.
Tout d'abords pour le faire fonctionner, vous aurez besoin d'installer
port95nt.exe quelque soit votre version de windows.
Ensuite télécharger le programme ici :
testv1.rar
Pour le configurer, modifier le fichier 'config.ini', attention à ne pas enlever de ligne, à ajouter des commentaire ou autre, le programme pourrait planter facilement.
Dedans vous trouverez ca :

32
70500
48
40
76
0.0000
pipo

Ligne 1 : c'est le nombre de caractére affiché, vous pouvez le modifier sans trop de risque.
Ligne 2 : temp de base, c'est le temp que dois durer une oscillation en cycle programme, c'est la premiére valeure à régler.
Ligne 3 : c'est le temp en 96ième de temp de base durant lequel pousse le moteur, 48/96 = la moitié du temp, c'est le maximum (il faut laisser aller durant le retour), le moteur pousse de 0 à cette valeure.
Ligne 4, 5 : c'est l'interval durant lequel est affiché le texte toujours en 96ième du temp de base.
Ligne 6 : C'est la vitesse de défillement du texte, en nombre de colone par oscillation (c'est à dire le temp de base). Essayez 2 ou 3 comme valleur pour voir (aprés réglages).
Ligne 7 : Le texte affiché.

Il vous faudra fermer et redémarrer le programme entre chaque modification du fichier.
Pour les réglages, on commence pas le réglage du moteur, il vous faut modifier la ligne 2 pour avoir une oscillation large est rapide en phase aves la fréquence libre du systéme (celle de la tige lorsque vous la lencez manuellement), quand vous l'aurez trouvé (c'est le jeu du tu chauffe tu refroidi, partez entre 40000 et 150000 puis affiné), la tête de lecture ira de butée en butée et fera un bruit abominable, il vous faudra alors baisser le temp de poussée ligne 3 (je suis descendu jusqu'a dix).

Quand le temp de poussé sera trop bas, la tige ne vibrera pas a moins que vous la lancié manuellement ; et alors si la tête de lecture continue a frappée les butées, il vous faudra baisser de quelque centaine le temp de base (il vaut mieux le baisser pour avoir une oscillation plus rapide).
Il est possible que vous ayez un temps de base 2 fois trop long, en effet, il y a possibilité de résonance à deux fois la fréquence libre. Essayez donc de diviser votre temps de base par 2, juste pour voir.
Si votre oscillation est propre, vous pouvez commencer à régler les dates de début et fin d'affichage ligne 4 et 5, pour ce faire demandez un texte de 32 '!', il vous faudra tâtonner pour que les 32 '!' ce suivent et ne se superpose pas.
Réduire la valeure en 4 fait se décaller à gauche le début du texte OU décaler à droite la fin du texte.
Augmenter  la valeure en 5 fait se décaller à droite la fin du texte OU décaler à gauche le début du texte (respectivement avec l'effet du dessus).
Si vous aller trop à gauche ou trop à droite, le texte fait la boucle et revient à l'envers en ce superposant, il vous faut donc revoir vos valeurs.
Un conseil, faite les réglages ligne par ligne, la 4 puis la 5, vous pourrez biensur affiner à souhait.
Remarquez que la valeur en 5 et toujours supérieur à la valeur en 4 et est toujours inférieur à 96, si vous avez un affichage presque bon en [55-96], et que vous voudriez aller plus 'loin' sur la valeure en ligne 5, c'est que vous n'affichez pas au bon moment, en effet vous pouvez afficher à l'aller ou au retour (relativement au moment ou pousse le moteur), essayez alors des valeurs comme [10, 45] et recommencé les réglages, cette fois les effets seront inverse (réduire la ligne 4 aura l'effet qu'avait d'augmenté la ligne 5).
Une fois le texte bien réglé, changé le pour un texte quelconque, si il est affiché à l'envers, il vous faudra alors inverser l'alimentation de la bobine (c'est inévitable), et probablement un peu raffiner vos réglages ; mais C'EST FINI :o)

Si votre engin fait du bruit, assurée vous que la tête ne va pas en butée, et assuré la fixation des ressors, une goutte de colle à papier (celle liquide en tube) devrais faire un bon tempom au point de fixation pour éviter les grincements (laissé la sécher quand même ;o)).

Les améliorations
Vous remarquerez très vite que le programme subit les ralentissements inhérent à l'utilisation de votre PC, c'est pour quoi je pense bientôt réussir à mettre au point l'électronique à base de 16f84 pour contrôler l'engin.
La tête de lecture est resté dans son morceau de disque dur, il est tout a fait envisageable de l'en sortir pour lui faire un support plus noble (plexi, bois ?) ce qui lui permettrait d'être dans l'axe de la tige et faciliterait la vie des ressorts.
L'affichage ne ce fait qu'a l'aller, un affichage aller retour rendrait certainement mieux, mais les réglages nécessaire me semble irréalisable avec un PIC16f84 :o(
On peut aussi envisager de rajouter des lignes, des couleurs etc...

Voilà, toute remarque sur mon mail astroPOINTtridentAROBASEfreePOINTfr.
Et surtout montrez nous vos réalisation sur
http://soj.mesdiscussions.net/




Retour aux articles

 

JackyPC © Copyright 2000-2024 - Tout droits réservés
Cable iPhone
Main en mousse
Annuaire Fablabs